#include <iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<map>
#include<vector>
using namespace std;
int main()
{
vector<int> b;
vector<int> c;
int a[4000][4],n;
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j< 4;j++)
scanf("%d",&a[i][j]);
for(int i=0;i<n;i++)
{ int p=a[i][0];
for(int j=0;j< n;j++)
{ b.push_back(p+a[j][1]);
}
}
int k=0;
for(int i=0;i< n;i++)
{ int p=a[i][2];
for(int j=0;j< n;j++)
{ c.push_back(p+a[j][3]);
k++;
}
}
sort(b.begin(), b.end());
long cnt=0;
for(int j=0;j<k;j++){
int start = 0;
int end = n*n - 1;
int x = -1;
int y = -1;
while(start <= end){
int mid = (start + end)/2;
if(b[mid] == -c[j]){
end = mid - 1;
x = (x > mid || x==-1) ? mid: x;
}else if(b[mid] > -c[j]){
end = mid - 1;
}else{
start = mid + 1;
}
}
if(x != -1){
start = 0;
end = n*n - 1;
while(start <= end){
int mid = (start + end)/2;
if(b[mid] == -c[j]){
start = mid + 1;
y = (y < mid || y ==-1)? mid: y;
}else if(b[mid] > -c[j]){
end = mid - 1;
}else{
start = mid + 1;
}
}
cnt += y - x + 1;
}
}
printf("%d\n",cnt);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxzdHJpbmc+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTx2ZWN0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7Cgl2ZWN0b3I8aW50PiBiOwoJdmVjdG9yPGludD4gYzsKCWludCBhWzQwMDBdWzRdLG47CgljaW4+Pm47Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJICAgIGZvcihpbnQgaj0wO2o8IDQ7aisrKQoJICAgICAgICBzY2FuZigiJWQiLCZhW2ldW2pdKTsKCQoJZm9yKGludCBpPTA7aTxuO2krKykKCXsgICBpbnQgcD1hW2ldWzBdOwoJICAgIGZvcihpbnQgaj0wO2o8IG47aisrKQoJICAgIHsgICBiLnB1c2hfYmFjayhwK2Fbal1bMV0pOwoJICAgICAgICAKCSAgICB9Cgl9CglpbnQgaz0wOwoJZm9yKGludCBpPTA7aTwgbjtpKyspCgl7ICAgaW50IHA9YVtpXVsyXTsKCSAgICBmb3IoaW50IGo9MDtqPCBuO2orKykKCSAgICB7ICAgYy5wdXNoX2JhY2socCthW2pdWzNdKTsKCSAgICAgICAgaysrOwoJICAgIH0gCgl9Cglzb3J0KGIuYmVnaW4oKSwgYi5lbmQoKSk7Cglsb25nIGNudD0wOwoJZm9yKGludCBqPTA7ajxrO2orKyl7CgkJaW50IHN0YXJ0ID0gMDsKCQlpbnQgZW5kID0gbipuIC0gMTsKCQlpbnQgeCA9IC0xOwoJCWludCB5ID0gLTE7CgkJd2hpbGUoc3RhcnQgPD0gZW5kKXsKCQkJaW50IG1pZCA9IChzdGFydCArIGVuZCkvMjsKCQkJaWYoYlttaWRdID09IC1jW2pdKXsKCQkJCWVuZCA9IG1pZCAtIDE7CgkJCQl4ID0gKHggPiBtaWQgfHwgeD09LTEpID8gbWlkOiB4OwoJCQl9ZWxzZSBpZihiW21pZF0gPiAtY1tqXSl7CgkJCQllbmQgPSBtaWQgLSAxOwoJCQl9ZWxzZXsKCQkJCXN0YXJ0ID0gbWlkICsgMTsKCQkJfQoJCX0KCQlpZih4ICE9IC0xKXsKCQkJc3RhcnQgPSAwOwoJCSAgICBlbmQgPSBuKm4gLSAxOwoJCQkKCQkJd2hpbGUoc3RhcnQgPD0gZW5kKXsKCQkJCWludCBtaWQgPSAoc3RhcnQgKyBlbmQpLzI7CgkJCQlpZihiW21pZF0gPT0gLWNbal0pewoJCQkJCXN0YXJ0ID0gbWlkICsgMTsKCQkJCQl5ID0gKHkgPCBtaWQgfHwgeSA9PS0xKT8gbWlkOiB5OwoJCQkJfWVsc2UgaWYoYlttaWRdID4gLWNbal0pewoJCQkJCWVuZCA9IG1pZCAtIDE7CgkJCQl9ZWxzZXsKCQkJCQlzdGFydCA9IG1pZCArIDE7CgkJICAgIAl9CgkJCX0KCQkJY250ICs9IHkgLSB4ICsgMTsKCQl9Cgl9CglwcmludGYoIiVkXG4iLGNudCk7CglyZXR1cm4gMDsKfQ==