/*
TASK:water
LANG:C
*/

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

typedef struct SNode
{
  short a[3];
  long prev;
}node;

short v, k, del[3][2];
long queue[4000000], qs=0, qe=0, tc=0, res=0, tb;
node tree[4000000];
char height[4000000];

void add(short x, short y, short z, long prev)
{
  tree[tc].a[0]=x;
  tree[tc].a[1]=y;
  tree[tc].a[2]=z;
  tree[tc].prev=prev;
  height[tc]=height[prev]+1;
  queue[qe++]=tc++;
}

int get(long *i)
{
  if(qe==qs)
    return 0;
  *i=queue[qs++];
  return 1;
}

int check(short x, short y, short z, long n)
{
  for(; n!=-1; n=tree[n].prev)
    if(x==tree[n].a[0] && y==tree[n].a[1] && z==tree[n].a[2])
      return 0;
  for(n=tb; n<tc; ++n)
    if(x==tree[n].a[0] && y==tree[n].a[1] && z==tree[n].a[2])
      return 0;
   return 1;
}

int main(void)
{
  char i, j;
  long n;
  short x[3];
  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(&n))
  {
    if(tree[n].a[0]==1||tree[n].a[1]==1||tree[n].a[2]==1)
    {
      ++res;
      continue;
    }
    if(height[n]>k)
      continue;
    tb=tc;
    for(i=0; i<3; ++i)
      for(j=0; j<3; ++j)
        if(i!=j)
        {
          if(tree[n].a[i]>del[i][0] && tree[n].a[j]+tree[n].a[i]-del[i][0]<=v)
          {
            memcpy(x, tree[n].a, 6);
            x[i]=del[i][0];
            x[j]+=tree[n].a[i]-del[i][0];
            if(check(x[0], x[1], x[2], n))
              add(x[0], x[1], x[2], n);
          }
          if(tree[n].a[i]>del[i][1] && tree[n].a[j]+tree[n].a[i]-del[i][1]<=v)
          {
            memcpy(x, tree[n].a, 6);
            x[i]=del[i][1];
            x[j]+=tree[n].a[i]-del[i][1];
            if(check(x[0], x[1], x[2], n))
              add(x[0], x[1], x[2], n);
          }
          if(tree[n].a[i] && tree[n].a[j]+tree[n].a[i]<=v)
          {
            memcpy(x, tree[n].a, 6);
            x[i]=0;
            x[j]+=tree[n].a[i];
            if(check(x[0], x[1], x[2], n))
              add(x[0], x[1], x[2], n);
          }
          if(del[j][0]>tree[n].a[j] && tree[n].a[i]>del[j][0]-tree[n].a[j])
          {
            memcpy(x, tree[n].a, 6);
            x[i]-=del[j][0]-tree[n].a[j];
            x[j]=del[j][0];
            if(check(x[0], x[1], x[2], n))
              add(x[0], x[1], x[2], n);
          }
          if(del[j][1]>tree[n].a[j] && tree[n].a[i]>del[j][1]-tree[n].a[j])
          {
            memcpy(x, tree[n].a, 6);
            x[i]-=del[j][1]-tree[n].a[j];
            x[j]=del[j][1];
            if(check(x[0], x[1], x[2], n))
              add(x[0], x[1], x[2], n);
          }
          if(v>tree[n].a[j] && tree[n].a[i]>v-tree[n].a[j])
          {
            memcpy(x, tree[n].a, 6);
            x[i]-=v-tree[n].a[j];
            x[j]=v;
            if(check(x[0], x[1], x[2], n))
              add(x[0], x[1], x[2], n);
          }
        }
  }
  printf("%ld\n", res);
  return 0;
}

