/*
TASK:water
LANG:C++
*/

#include <cstdio>
#include <algorithm>
#include <queue>

using namespace std;

const long maxn=201;
const long maxn2=201*201;

long v,m[2][3],k;
long ret;
char vis[maxn*maxn2],vis1[7][maxn*maxn2];
queue <long> q[8];
void inp(void)
{ long i,a1,a2;
  scanf("%ld%ld",&v,&k);
  for (i=0;i<3;i++)
  { scanf("%ld%ld",&a1,&a2);
    m[0][i]=min(a1,a2);
    m[1][i]=max(a1,a2);
  }
}
long code(long a,long b,long c)
{ return (c+b*maxn+a*maxn2);
}
void decode(long x,long &a,long &b,long &c)
{ c=x%maxn;
  x/=maxn;
  b=x%maxn;
  x/=maxn;
  a=x;
}

void dfs(long s,long t)
{ long a[3],kk,a1[3],kk1,x,i,j,u,xx;
  decode(s,a[0],a[1],a[2]);
  if (a[0]==1 || a[1]==1 || a[2]==1)
  { ret++;
    return;
  }
  if (t==k) return;
  for (i=0;i<3;i++)
  for (j=0;j<3;j++) if (i!=j)
  {  for (u=0;u<3;u++) if (u!=i && u!=j) a1[u]=a[u];
     if (a[i]>m[1][i] && a[j]+a[i]-m[1][i]<=v)
     { a1[j]=a[j]+a[i]-m[1][i];
       a1[i]=m[1][i];
       xx=code(a1[0],a1[1],a1[2]);
       if (!vis[xx]&&!vis1[t][xx])
       { vis[xx]=1;
         vis1[t][xx]=1;   //
         q[t].push(xx);   //
         dfs(xx,t+1);
         vis[xx]=0;
       }
     }
     if (a[i]>m[0][i] && a[j]+a[i]-m[0][i]<=v)
     { a1[j]=a[j]+a[i]-m[0][i];
       a1[i]=m[0][i];
       xx=code(a1[0],a1[1],a1[2]);
       if (!vis[xx]&&!vis1[t][xx])
       {
       vis[xx]=1;
       vis1[t][xx]=1;   //
         q[t].push(xx);   //
       dfs(xx,t+1);
       vis[xx]=0;
       }
     }
     if (a[j]+a[i]<=v)
     { a1[j]=a[j]+a[i];
       a1[i]=0;
       xx=code(a1[0],a1[1],a1[2]);
       if (!vis[xx]&&!vis1[t][xx])
       {
       vis[xx]=1;
       vis1[t][xx]=1;   //
         q[t].push(xx);   //
       dfs(xx,t+1);
       vis[xx]=0;
       }
     }
     if (a[i]<m[0][i] && a[j]>m[0][i]-a[i])
     { a1[j]=a[j]-m[0][i]+a[i];
       a1[i]=m[0][i];
       xx=code(a1[0],a1[1],a1[2]);
       if (!vis[xx]&&!vis1[t][xx])
       {
       vis[xx]=1;
       vis1[t][xx]=1;   //
         q[t].push(xx);   //
       dfs(xx,t+1);
       vis[xx]=0;
       }
     }
     if (a[i]<m[1][i] && a[j]>m[1][i]-a[i])
     { a1[j]=a[j]-m[1][i]+a[i];
       a1[i]=m[1][i];
       xx=code(a1[0],a1[1],a1[2]);
       if (!vis[xx]&&!vis1[t][xx]) {
       vis[xx]=1;
       vis1[t][xx]=1;   //
         q[t].push(xx);   //
       dfs(xx,t+1);
       vis[xx]=0;
       }
     }
  }
  while (!q[t].empty())
  { vis1[t][q[t].front()]=0;
    q[t].pop();
  }
}

int main(void)
{ //freopen("water.inp","r",stdin);
  memset(vis,0,sizeof(vis));
  memset(vis1,0,sizeof(vis1));
  inp();
  vis[code(v,0,0)]=1;
  dfs(code(v,0,0),0);
  printf("%ld\n",ret);
  return 0;
}

