Problem:
Score : 600 points

Problem Statement

Takahashi has N balls with positive integers written on them. The integer written on the i-th ball is A_i.
He would like to form some number of pairs such that the sum of the integers written on each pair of balls is a power of 2.
Note that a ball cannot belong to multiple pairs.
Find the maximum possible number of pairs that can be formed.

Here, a positive integer is said to be a power of 2 when it can be written as 2^t using some non-negative integer t.

Constraints

1 \leq N \leq 2\times 10^5

1 \leq A_i \leq 10^9

A_i is an integer.

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 ... A_N

Output

Print the maximum possible number of pairs such that the sum of the integers written on each pair of balls is a power of 2.

Sample Input 1

3
1 2 3

Sample Output 1

1

We can form one pair whose sum of the written numbers is 4 by pairing the first and third balls.
Note that we cannot pair the second ball with itself.

Sample Input 2

5
3 11 14 5 13

Sample Output 2

2

Solution in Go (1.6) (judge verdict: Wrong Answer)

package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
	"strconv"
	"strings"
)

var (
	reader = bufio.NewReader(os.Stdin)
	writer = bufio.NewWriter(os.Stdout)
)

func main() {
	defer writer.Flush()
	var n, ans int
	fmt.Fscanf(reader, "%d", &n)
	var a []int
	for i := 0; i < n; i++ {
		var aTmp int
		fmt.Fscanf(reader, "%d", &aTmp)
		a = append(a, aTmp)
	}
	for i, v := range a {
		for j := i + 1; j < n; j++ {
			tmp := math.Sqrt(float64(v + a[j]))
			tmpStr := strconv.FormatFloat(tmp, 'f', 4, 64)
			if strings.Contains(tmpStr, "0000") {
				ans++
			}
		}
	}
	fmt.Fprintln(writer, ans)
}