/*
TASK:water
LANG:C
*/

#include <stdio.h>
#include <math.h>
#define MAX 256
FILE *in; FILE *out;
int n, m;
int vis[MAX][MAX];
int a[3][2];


int recurse(int aa, int bb, int cc, int lvl)
{
int i, fill;
int ans = 0;


if (lvl > n) return 0;

if (aa == 1 || bb == 1 || cc == 1) 
   {
//   fprintf(out, "%d %d %d %d\n", aa, bb, cc, lvl);
   return 1;
   }

//if (vis[aa][bb]) return 0;
//else vis[aa][bb] = 1;



if (aa>=a[0][0])
   {
   ans += recurse(a[0][0], bb+aa-a[0][0], cc, lvl+1);
   ans += recurse(a[0][0], bb, cc+aa-a[0][0], lvl+1);
   }
if (aa>=a[0][1])
   {
   ans += recurse(a[0][1], bb+aa-a[0][1], cc, lvl+1);
   ans += recurse(a[0][1], bb, cc+aa-a[0][1], lvl+1);
   }

if (bb>=a[1][0])
   {
   ans += recurse(aa+bb-a[1][0], a[1][0], cc, lvl+1);
   ans += recurse(aa, a[1][0], cc+bb-a[1][0], lvl+1);
   }
if (bb>=a[1][1])
   {
   ans += recurse(aa+bb-a[1][1], a[1][1], cc, lvl+1);
   ans += recurse(aa, a[1][1], cc+bb-a[1][1], lvl+1);
   }
if (cc>=a[2][0])
   {
   ans += recurse(aa+cc-a[2][0], bb, a[2][0], lvl+1);
   ans += recurse(aa, bb+cc-a[2][0], a[2][0], lvl+1);
   }
if (cc>=a[2][1])
   {
   ans += recurse(aa+cc-a[2][1], bb, a[2][1], lvl+1);
   ans += recurse(aa, bb+cc-a[2][1], a[2][1], lvl+1);
   }

// ======== for aa ======== //

if (aa<a[0][0])
   {
   fill = a[0][0] - aa;
   if (bb >= fill) ans += recurse(a[0][0], bb-fill, cc, lvl+1);
   if (cc >= fill) ans += recurse(a[0][0], bb, cc-fill, lvl+1);
   }
if (aa<a[0][1])
   {
   fill = a[0][1] - aa;
   if (bb >= fill) ans += recurse(a[0][1], bb-fill, cc, lvl+1);
   if (cc >= fill) ans += recurse(a[0][1], bb, cc-fill, lvl+1);
   }

// ======== for bb ======== //

if (bb<a[1][0])
   {
   fill = a[1][0] - bb;
   if (aa >= fill) ans += recurse(aa-fill, a[1][0], cc, lvl+1);
   if (cc >= fill) ans += recurse(aa, a[1][0], cc-fill, lvl+1);
   }
if (bb<a[1][1])
   {
   fill = a[1][1] - bb;
   if (aa >= fill) ans += recurse(aa-fill, a[1][1], cc, lvl+1);
   if (cc >= fill) ans += recurse(aa, a[1][1], cc-fill, lvl+1);
   }

// ======== for cc ======== //

if (cc<a[2][0])
   {
   fill = a[2][0] - cc;
   if (aa >= fill) ans += recurse(aa-fill, bb, a[2][0], lvl+1);
   if (bb >= fill) ans += recurse(aa, bb-fill, a[2][0], lvl+1);
   }
if (cc<a[2][1])
   {
   fill = a[2][1] - cc;
   if (aa >= fill) ans += recurse(aa-fill, bb, a[2][1], lvl+1);
   if (bb >= fill) ans += recurse(aa, bb-fill, a[2][1], lvl+1);
   }

return ans;
}



int main(void)
{
int i, c;
int ans;

n = 0;
for (i=0; i<MAX; i++) for (c=0; c<MAX; c++) vis[i][c] = 0;

//in = fopen("water.in", "rt"); out = fopen("water.out", "wt");
in = stdin; out = stdout;
fscanf(in, "%d %d", &m, &n);
for (i=0; i<3; i++) fscanf(in, "%d %d", &a[i][0], &a[i][1]);
fclose(in);


ans = recurse(m, 0, 0, 0);
fprintf(out, "%d\n", ans);
fclose(out);

return 0;
}
