```go
package main
import "fmt"
func main() {
var n int
fmt.Scan(&n)
freq := make(map[int64]int)
unique := make([]int64, 0)
seen := make(map[int64]bool)
for i := 0; i < n; i++ {
var x int64
fmt.Scan(&x)
freq[x]++
if !seen[x] {
seen[x] = true
unique = append(unique, x)
}
}
maxLen := 0
if freq[0] >= 2 && freq[0] > maxLen {
maxLen = freq[0]
}
for i := 0; i < len(unique); i++ {
for j := 0; j < len(unique); j++ {
a, b := unique[i], unique[j]
if a == 0 && b == 0 {
continue
}
if a == b && freq[a] < 2 {
continue
}
cnt := make(map[int64]int)
cnt[a]++
cnt[b]++
length := 2
prev, curr := a, b
for {
next := prev + curr
if cnt[next] >= freq[next] {
break
}
cnt[next]++
length++
prev, curr = curr, next
}
if length > maxLen {
maxLen = length
}
}
}
fmt.Println(maxLen)
}
```