There are n sticks, the i-th of which has length ai . Alex wants to assemble from them as many parallelograms as possible simultaneously, with each stick used at most in one parallelogram. What maximal number of parallelograms is it possibl
          There are n sticks, the i-th of which has length ai 
 . Alex wants to assemble from them as many 
 parallelograms as possible simultaneously, with each stick used at most in one parallelogram. What 
 maximal number of parallelograms is it possible to assemble? 
 Input 
 The first line contains a single integer n (1 ≤ n ≤ 200000) — the number of sticks. 
 The second line contains n integers ai (1 ≤ ai ≤ 200000) — the lengths of sticks. 
 Output 
 Output a single integer — the maximal number of parallelograms that is possible to assemble. 
 Examples 
 standard input standard output 
 4 
 1 2 1 2 
 1 
 12 
 1 3 5 7 1 3 5 7 1 3 5 7 
 2
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<string>
#include<bitset>
#include<ctime>
#include<deque>
typedef long long ll;
using namespace std;
typedef unsigned long long int ull;
#define maxn 500005
#define ms(x) memset(x,0,sizeof(x))
#define Inf 0x7fffffff
#define inf 0x3f3f3f3f
const long long int mod = 1e9 + 7;
#define pi acos(-1.0)
#define pii pair<int,int>
#define eps 1e-7
#define pll pair<ll,ll>
ll quickpow(ll a, ll b) {
    ll ans = 1;
    a = a % mod;
    while (b > 0) {
        if (b % 2)ans = ans * a;
        b = b / 2;
        a = a * a;
    }
    return ans;
}
int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a%b);
}
bool prime(int x) {
    if (x == 0 || x == 1)return false;
    for (int i = 2; i <= sqrt(x); i++) {
        if (x%i == 0)return false;
    }
    return true;
}
int a[maxn];
map<int, int>mp;
int main()
{
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
    int i, j;
    for (i = 0; i < n; i++) {
        cin >> a[i];
        mp[a[i]]++;
    }
    int cnt = 0;
    for (i = 1; i <=200000; i++) {
        if (mp[i] % 2 == 1) {
            mp[i]--;
        }
    }
    for (i = 1; i <=200000; i++) {
        if (mp[i] >= 2 && mp[i] % 2 == 0) {
            cnt += (mp[i] / 2);
        }
    }
    if (cnt % 2 == 1) {
        cout << cnt / 2 << endl;
    }
    else {
        cout << cnt / 2 << endl;
    }
}