#include<iostream>
#include<map>
#include<stdio.h>
#include<algorithm>
using namespace std;
map<int,int>m;
map<int,int>::iterator point;
int cube[101]={0};
void initialize()
{
int index=0;
for (int i=-50;i<=50;i++)
{
if(i==0)
i=i+1;
cube[index++]=i*i*i;
}
}
int main()
{
initialize();
int i,j,k;
int f;
int x1,x2,x3,x4,x5;
while (cin>>x1>>x2>>x3>>x4>>x5)
{
long count=0;
m.clear();
for(i=0;i<100;i++)
for(j=0;j<100;j++)
m[-(cube[i]*x1+cube[j]*x2)]++;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
for(k=0;k<100;k++)
{
f=cube[i]*x4+cube[j]*x5+cube[k]*x3;
point = m.find(f);
if(point!=m.end())
count+=point->second;
}
cout<<count<<endl;
}
return 0;
}
#include<map>
#include<stdio.h>
#include<algorithm>
using namespace std;
map<int,int>m;
map<int,int>::iterator point;
int cube[101]={0};
void initialize()
{
int index=0;
for (int i=-50;i<=50;i++)
{
if(i==0)
i=i+1;
cube[index++]=i*i*i;
}
}
int main()
{
initialize();
int i,j,k;
int f;
int x1,x2,x3,x4,x5;
while (cin>>x1>>x2>>x3>>x4>>x5)
{
long count=0;
m.clear();
for(i=0;i<100;i++)
for(j=0;j<100;j++)
m[-(cube[i]*x1+cube[j]*x2)]++;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
for(k=0;k<100;k++)
{
f=cube[i]*x4+cube[j]*x5+cube[k]*x3;
point = m.find(f);
if(point!=m.end())
count+=point->second;
}
cout<<count<<endl;
}
return 0;
}