#include<stdio.h>
#include<stdlib.h>
long long a[4000],b[4000],c[4000],d[4000];
long long ab[4000*4000],cd[4000*4000];
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
int binary_search(long long key,long long n)
{
int low,high,mid;
low=0;
high=n-1;
mid = low+((high-low)/2);
while(low<=high){
mid = low+((high-low)/2);
if(cd[mid]==key){
//printf("%lld\n",key);
return 1;
}
else if(cd[mid]<key)
low = mid+1;
else
high = mid-1;
}
return 0;
}
int main()
{
int n,i,j,bol;
long long count;
for(i=0;i<n;i++){
scanf("%lld %lld %lld %lld ", &a
[i
], &b
[i
], &c
[i
], &d
[i
]); }
count=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
ab[count]=a[i]+b[j];
count++;
}
}
count=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
cd[count]=c[i]+d[j];
count++;
}
}
count = 0;
qsort(ab
,n
*n
,sizeof(long long),compare
); qsort(cd
,n
*n
,sizeof(long long),compare
); /*for(i=0;i<n*n;i++){
printf("%lld %lld\n",ab[i],cd[i]);
}*/
for(i=0;i<n*n;i++){
bol=binary_search(-ab[i],n*n);
if(bol==1)
count++;
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+Cgpsb25nIGxvbmcgYVs0MDAwXSxiWzQwMDBdLGNbNDAwMF0sZFs0MDAwXTsKbG9uZyBsb25nIGFiWzQwMDAqNDAwMF0sY2RbNDAwMCo0MDAwXTsKCmludCBjb21wYXJlIChjb25zdCB2b2lkICogYSwgY29uc3Qgdm9pZCAqIGIpCnsKICByZXR1cm4gKCAqKGludCopYSAtICooaW50KiliICk7Cn0KCmludCBiaW5hcnlfc2VhcmNoKGxvbmcgbG9uZyBrZXksbG9uZyBsb25nIG4pCnsKICAgIGludCBsb3csaGlnaCxtaWQ7CiAgICBsb3c9MDsKICAgIGhpZ2g9bi0xOwogICAgbWlkID0gbG93KygoaGlnaC1sb3cpLzIpOwogICAgd2hpbGUobG93PD1oaWdoKXsKICAgICAgICBtaWQgPSBsb3crKChoaWdoLWxvdykvMik7CiAgICAgICAgaWYoY2RbbWlkXT09a2V5KXsKICAgICAgICAgICAgICAgIC8vcHJpbnRmKCIlbGxkXG4iLGtleSk7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGNkW21pZF08a2V5KQogICAgICAgICAgICBsb3cgPSBtaWQrMTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGhpZ2ggPSBtaWQtMTsKICAgIH0KICAgIHJldHVybiAwOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBuLGksaixib2w7CiAgICBsb25nIGxvbmcgY291bnQ7CiAgICBzY2FuZigiJWQgIiwmbik7CiAgICBmb3IoaT0wO2k8bjtpKyspewogICAgICAgIHNjYW5mKCIlbGxkICVsbGQgJWxsZCAlbGxkICIsICZhW2ldLCAmYltpXSwgJmNbaV0sICZkW2ldKTsKICAgIH0KICAgIGNvdW50PTA7CiAgICBmb3IoaT0wO2k8bjtpKyspewogICAgICAgIGZvcihqPTA7ajxuO2orKyl7CiAgICAgICAgICAgIGFiW2NvdW50XT1hW2ldK2Jbal07CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgfQogICAgfQogICAgY291bnQ9MDsKICAgIGZvcihpPTA7aTxuO2krKyl7CiAgICAgICAgZm9yKGo9MDtqPG47aisrKXsKICAgICAgICAgICAgY2RbY291bnRdPWNbaV0rZFtqXTsKICAgICAgICAgICAgY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICBjb3VudCA9IDA7CiAgICBxc29ydChhYixuKm4sc2l6ZW9mKGxvbmcgbG9uZyksY29tcGFyZSk7CiAgICBxc29ydChjZCxuKm4sc2l6ZW9mKGxvbmcgbG9uZyksY29tcGFyZSk7CiAgICAvKmZvcihpPTA7aTxuKm47aSsrKXsKICAgICAgICBwcmludGYoIiVsbGQgJWxsZFxuIixhYltpXSxjZFtpXSk7CiAgICB9Ki8KICAgIGZvcihpPTA7aTxuKm47aSsrKXsKICAgICAgICBib2w9YmluYXJ5X3NlYXJjaCgtYWJbaV0sbipuKTsKICAgICAgICBpZihib2w9PTEpCiAgICAgICAgICAgIGNvdW50Kys7CiAgICB9CiAgICBwcmludGYoIiVsbGQiLGNvdW50KTsKICAgIHJldHVybiAwOwp9Cg==