You are given n integers a1, a2, ..., an. Find the number of pairs of indexes i, j (i < j) that ai + aj is a power of 2 (i. e. some integer x exists so that ai + aj = 2x).

Input

The first line contains the single positive integer n (1 ≤ n ≤ 105) — the number of integers.

The second line contains n positive integers a1, a2, ..., an (1 ≤ ai ≤ 109).

Output

Print the number of pairs of indexes i, j (i < j) that ai + aj is a power of 2.

Examples

Input

4
7 3 2 1


Output

2


Input

3
1 1 1


Output

3

Note

In the first example the following pairs of indexes include in answer: (1, 4) and (2, 4).

In the second example all pairs of indexes (i, j) (where i < j) include in answer.
import java.io.*;
import java.util.*;

public class practice702b {
	public static void main(String[] args) throws Exception {
		
//		BufferedReader f = new BufferedReader(new  FileReader (new  File("sample.txt")));	
//		PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("sample.txt")));
//		StringTokenizer st = new StringTokenizer(f.readLine());

		BufferedReader f = new BufferedReader(new InputStreamReader(System.in));	
		PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
		StringTokenizer st = new StringTokenizer(f.readLine());

		int n = Integer.parseInt(st.nextToken());
		
		st = new StringTokenizer(f.readLine());
		HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
		for (int i = 0; i < n; i++) {
			int curr = Integer.parseInt(st.nextToken());
			hm.put(curr, hm.getOrDefault(curr, 0)+1);			
		}
		
		
		long pair = 0;
		for (Map.Entry<Integer, Integer> element : hm.entrySet()) {
			long i = 1;
			while (i <= Integer.MAX_VALUE) {
				if ((int)(i-element.getKey()) == element.getKey()) {
					pair += (long)(hm.get(element.getKey())-1)*hm.get(element.getKey());
				} else {
					pair += (long)hm.getOrDefault((int)(i-element.getKey()), 0)*hm.get(element.getKey());
				}
				i *= 2;
			}
		}

		out.println(pair/2);
		out.close();
	}
}


