/*
TASK:water
LANG:C
*/

#include <stdio.h>
#include <string.h>

typedef struct STriple
{
  short a[3];
} triple;

char used[201][201][201], done[3][3][201];
short v, k, del[3][2];
triple queue[100000];
long qs=0, qe=0;
long long res=0;

void add(short x, short y, short z, short step)
{
  if((x==1||y==1||z==1)&&step<=k+1)
  {
    ++res;
    /* printf("%hd %hd %hd\n", x, y, z);*/
    return;
  }
  if(used[x][y][z])
    return;
  used[x][y][z]=step;
  queue[qe].a[0]=x;
  queue[qe].a[1]=y;
  queue[qe++].a[2]=z;
}

int get(short *x, short *y, short *z)
{
  if(qe==qs)
    return 0;
  *x=queue[qs].a[0];
  *y=queue[qs].a[1];
  *z=queue[qs++].a[2];
  return 1;
}

int main(void)
{
  short x[3], i, j, y[3], cs;
  memset(used, 0, sizeof(char)*201*201*201);
  scanf("%hd %hd %hd %hd %hd %hd %hd %hd", &v, &k, &del[0][0], &del[0][1], &del[1][0], &del[1][1], &del[2][0], &del[2][1]);
  add(v, 0, 0, 1);
  while(get(x, &x[1], &x[2]))
  {
    cs=used[*x][x[1]][x[2]];
    if(cs>k)
      continue;
    memset(done, 0, sizeof(char)*3*3*201);
    for(i=0; i<3; ++i)
      for(j=0; j<3; ++j)
      if(i!=j)
      {
        if(x[i]>del[i][0] && x[j]+x[i]-del[i][0]<=v && !done[i][j][x[i]-del[i][0]])
        {
          done[i][j][x[i]-del[i][0]]=1;
          memcpy(y, x, 6);
          y[i]=del[i][0];
          y[j]=x[j]+x[i]-del[i][0];
          add(*y, y[1], y[2], cs+1);
        }
        if(x[i]>del[i][1] && x[j]+x[i]-del[i][1]<=v && !done[i][j][x[i]-del[i][1]])
        {
          done[i][j][x[i]-del[i][1]]=1;
          memcpy(y, x, 6);
          y[i]=del[i][1];
          y[j]=x[j]+x[i]-del[i][1];
          add(*y, y[1], y[2], cs+1);
        }
        if(x[i] && x[j]+x[i]<=v && !done[i][j][x[i]])
        {
          done[i][j][x[i]]=1;
          memcpy(y, x, 6);
          y[i]=0;
          y[j]=x[j]+x[i];
          add(*y, y[1], y[2], cs+1);
        }
        if(x[j]<del[j][0] && x[i]>del[j][0]-x[j] && !done[i][j][del[j][0]-x[j]])
        {
          done[i][j][del[j][0]-x[j]]=1;
          memcpy(y, x, 6);
          y[i]=x[i]-del[j][0]+x[j];
          y[j]=del[j][0];
          add(*y, y[1], y[2], cs+1);
        }
        if(x[j]<del[j][0] && x[i]>del[j][1]-x[j] && !done[i][j][del[j][1]-x[j]])
        {
          done[i][j][del[j][1]-x[j]]=1;
          memcpy(y, x, 6);
          y[i]=x[i]-del[j][1]+x[j];
          y[j]=del[j][1];
          add(*y, y[1], y[2], cs+1);
        }
      }
  }
  printf("%Ld\n", res);
  return 0;
}

