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 C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>
#define pt(sth) cout << sth << "\n"
#define chmax(a, b) {if(a<b) a=b;}
#define chmin(a, b) {if(a>b) a=b;}
#define moC(a, s, b) (a)=((a)s(b)+MOD)%MOD
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
static const ll INF=1e18;
static const ll MAX=101010;
static const ll MOD=1e9+7;


int main(void) {
  ll N;
  cin >> N;
  vector<ll> v;
  ll i;
  map<ll, ll> mp;
  
  for(i=0; i<N; i++) {
    ll a;
    cin >> a;
    
    mp[a]++;
    if(mp[a]==1) v.push_back(a);
  }
  sort(v.begin(), v.end());
  
  
  
  ll ans=0;
  for(i=(ll)v.size()-1; i>=1; i--) {
    ll t=1;
    while(v[i]>=t) t<<=1;
    
    ll itr=lower_bound(v.begin(), v.end(), t-v[i])-v.begin();
    if(v[itr]+v[i]==t) {
      if(v[itr]==v[i]) {
        ans+=mp[v[i]]/2;
      }else {
        ans+=min(mp[v[itr]], mp[v[i]]);
        mp[v[itr]]-=min(mp[v[itr]], mp[v[i]]);
      }
    }
  }
  
  pt(ans);
  
}