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.
#include <bits/stdc++.h>
using namespace std;
int n, w[100100], er[40], data[100100], tot, num[100100];
long long ans;
int find(int a) {
  int L = 0, R = tot + 1, Mid;
  while (L + 1 < R) {
    Mid = (L + R) >> 1;
    if (data[Mid] <= a)
      L = Mid;
    else
      R = Mid;
  }
  return L;
}
void Find(int p) {
  memset(num, 0, sizeof num);
  for (int i = 1; i <= n; i++) {
    int pos = find(er[p] - w[i]);
    if (pos && data[pos] == er[p] - w[i]) ans += num[pos];
    pos = find(w[i]);
    num[pos]++;
  }
}
int main() {
  ans = 0;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", w + i);
  er[0] = 1;
  for (int i = 1; i <= 31; i++) er[i] = er[i - 1] << 1;
  memcpy(data, w, sizeof w);
  sort(data + 1, data + 1 + n);
  tot = 1;
  for (int i = 2; i <= n; i++)
    if (data[i] != data[i - 1]) data[++tot] = data[i];
  for (int i = 0; i < 31; i++) Find(i);
  cout << ans << endl;
  return 0;
}
