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.util.*;
import java.io.*;

public class B {
    int[] a;
    TreeMap<Integer, Integer> cnt;

    int countPairs(int a, int pow) {
        int pow2 = 1 << pow;
        if (cnt.containsKey(pow2 - a)) {
            if (pow2 - a == a)
                return cnt.get(pow2 - a) - 1;
            else
                return cnt.get(pow2 - a);
        }
        return 0;
    }

    public void solve() throws IOException {
        int n = nextInt();
        a = new int[n];
        cnt = new TreeMap<>();
        for (int i = 0; i < n; i++) {
            a[i] = nextInt();
            if (cnt.containsKey(a[i]))
                cnt.put(a[i], cnt.get(a[i]) + 1);
            else
                cnt.put(a[i], 1);
        }

        long cntPairs = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 1; j < 32; j++)
                cntPairs += countPairs(a[i], j);
        }

        cntPairs /= 2;
        output.println(cntPairs);
    }

    public static void main(String[] args) throws IOException {
        new B();
    }

    StringTokenizer st = null;
    BufferedReader br;
    PrintWriter output;

    B() throws IOException {
        br = new BufferedReader(new InputStreamReader(System.in));
        output = new PrintWriter(System.out);
        solve();
        br.close();
        output.close();
    }

    String next() throws IOException {
        while (st == null || !st.hasMoreTokens())
            st = new StringTokenizer(br.readLine());

        return st.nextToken();
    }

    long nextLong() throws IOException {
        return Long.parseLong(next());
    }

    int nextInt() throws IOException {
        return Integer.parseInt(next());
    }

    double nextDouble() throws IOException {
        return Double.parseDouble(next());
    }
}