#include <iostream>
#include <cstdio>
using namespace std;
struct elem
{
long long v;
long long hm;
};
long long solve(elem a, long long s)
{
if (a.v == 0 && s != 0)
return 0;
else if (a.v == 0 && s == 0)
return a.hm+1;
else
{
long long nr = s/a.v;
if (nr <= a.hm)
return 1;
else
return 0;
}
}
long long solve(elem a, elem b, long long s)
{
if (a.v == 0)
return (a.hm+1) * solve(b, s);
if (b.v == 0)
return (b.hm+1) * solve(a, s);
if (a.v == -1 && b.v == 1)
return solve(b, a, s);
if (a.v == 1 && b.v == -1)
return min(a.hm-s, b.hm)+1;
if (a.v == 1 && b.v == 1)
return min(max(a.hm, s), b.hm-(s-a.hm)) + 1;
elem x = a; x.v = -a.v;
elem y = b; y.v = -b.v;
if (s > 0) return 0;
if (s == 0) return 1;
return solve(x, y, -s);
}
long long solve(elem a, elem b, elem c, long long s)
{
long long rez = 0;
if (a.v == 0)
return (a.hm+1) * solve(b, c, s);
if (b.v == 0)
return (b.hm+1) * solve(a, c, s);
if (c.v == 0)
return (c.hm+1) * solve(a, b, s);
if (a.hm > 0)
for (int i = 0; i <= a.hm; i++)
rez += solve(b, c, s-i*(a.v));
return rez;
}
int main()
{
freopen("plus.in", "r", stdin);
freopen("plus.out", "w", stdout);
elem a, b, c;
long long s, rez;
scanf("%lld", &s);
scanf("%lld %lld", &a.hm, &a.v);
scanf("%lld %lld", &b.hm, &b.v);
scanf("%lld %lld", &c.hm, &c.v);
rez = solve(a, b, c, s);
printf("%lld", rez);
return 0;
}