#include <iostream>
#include <cstring>
using namespace std;

int dx[4];
int dy[4];
int f[4][4];

int dfs(int x, int y)
{
	int ret=0;
	//cout << x << " " << y << endl;

	if(x==0 && y==4)
	{
		return 1;
	}

	for(int i=0; i<4; i++)
	{
		int nx=x+dx[i];
		int ny=y+dy[i];

		if(0<=nx && nx<=3 && 0<=ny && ny<=3)
		{
			if(f[nx][ny]) continue;
			f[nx][ny] = 1;
			f[x][y]=1;

			int t=y*4+x+1;
			for(; t<16; t++)
			{
				if(f[t%4][t/4]==0) break;
			}
			ret += dfs(t%4,t/4);
			f[x][y]=0;
			f[nx][ny] = 0;
		}
	}

	return ret;
}

int main()
{
	while(cin >> dx[0])
	{
		if(dx[0]>4) break;
		
		cin >> dy[0];
		for(int i=1; i<4; i++)
		{
			cin >> dx[i] >> dy[i];
		}

		memset(f,0,sizeof(f));
		cout << dfs(0,0) << endl;
	}
}