#include <cstdio>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef vector<ll>::iterator IT;
const int M = 1024;

ll a[4][M];

int main()
{
	int n; ll w, ans = 0;
	scanf("%d %lld", &n, &w);
	for (int i = 0; i < 4; ++i)
		for (int j = 0; j < n; ++j)
			scanf("%lld", &a[i][j]);
	
	vector<ll> b, c;
	for (int i = 0; i < n; ++i)
		for (int j = 0; j < n; ++j)
		{
			b.push_back(a[0][i] + a[1][j]);
			c.push_back(a[2][i] + a[3][j]);
		}
	sort(b.begin(), b.end());
	sort(c.begin(), c.end());
	
	
	for (IT it= b.begin(); it != b.end(); ++it)// 加的长度为 大于 - 正好等于的第一个 
		ans += upper_bound(c.begin(), c.end(), w-(*it)) - lower_bound(c.begin(), c.end(), w-(*it));
	printf("%lld\n", ans);
	
	return 0;
}
