{
TASK: water
LANG: PASCAL
}
{$R-}
Const
maxX = 1000000;
maxN = 201;
maxK = 8;
Type
Pts = record
        x, y, z, k : byte;
      end;
P = record
      c, p : longint;
      k : longint;
    end;
var
a : array[0..maxn, 0..maxN, 0..maxN] of P;
b : array[1..6] of byte;
c : array[1..maxX] of Pts;
en, i, j, k, l, v : longint;
br : longint;
Procedure Put(x, y, z, k : byte; ind : longint);
begin
if (x>=0) and (y>=0) and (z>=0) and (x<=v) and (y<=v) and (z<=v) and (x<>1) and (y<>1) and (z<>1) then
  begin
    if a[x, y, z].k=k+2 then
      begin
        a[x, y, z].k:=k-1;
        a[x, y, z].c:=a[x, y, z].p;
        a[x, y, z].p:=0;
      end;
    if a[x, y, z].k=k then
      begin
        if a[x, y, z].c=0 then
          begin
            inc(en);
            c[en].x:=x;
            c[en].y:=y;
            c[en].z:=z;
            c[en].k:=k+1;
          end;
        inc(a[x, y, z].c);
      end
    else
      if a[x, y, z].k=k+1 then
        begin
          if a[x, y, z].p=0 then
            begin
              inc(en);
              c[en].x:=x;
              c[en].y:=y;
              c[en].z:=z;
              c[en].k:=k+1;
            end;
          inc(a[x, y, z].p);
        end;
 end
else
  if (x=1) or (y=1) or (z=1) then
    br:=br+a[c[ind].x, c[ind].y, c[ind].z].c
end;

Begin
readln(v, k);
for i:=1 to 6 do
  read(b[i]);
a[v, 0, 0].c := 1;
a[v, 0, 0].p := 0;
a[v, 0, 0].k :=0;
c[1].x:=20;
c[1].y:=0;
c[1].z:=0;
i:=0;
en:=1;

while c[i+1].k<k do
  begin
    inc(i);
    if c[i].x<>0 then
      begin
        Put(0, c[i].x+c[i].y, c[i].z, c[i].k, i);
        Put(b[1], c[i].y+c[i].x-b[1], c[i].z, c[i].k, i);
        Put(b[2], c[i].y+c[i].x-b[2], c[i].z, c[i].k, i);
        Put(c[i].x-(b[3]-c[i].y), b[3], c[i].z, c[i].k, i);
        Put(c[i].x-(b[4]-c[i].y), b[4], c[i].z, c[i].k, i);

        Put(0, c[i].y, c[i].z+c[i].x, c[i].k, i);
        Put(b[1], c[i].y, c[i].z+c[i].x-b[1], c[i].k, i);
        Put(b[2], c[i].y, c[i].z+c[i].x-b[2], c[i].k, i);
        Put(c[i].x-(b[5]-c[i].z), c[i].y, b[5], c[i].k, i);
        Put(c[i].x-(b[6]-c[i].z), c[i].y, b[6], c[i].k, i);
      end;
    if c[i].y<>0 then
      begin
        Put(c[i].x+c[i].y, 0, c[i].z, c[i].k, i);
        Put(c[i].x+c[i].y-b[3], b[3], c[i].z, c[i].k, i);
        Put(c[i].x+c[i].y-b[4], b[4], c[i].z, c[i].k, i);
        Put(b[1], c[i].y-(b[1]-c[i].x), c[i].z, c[i].k, i);
        Put(b[2], c[i].y-(b[2]-c[i].x), c[i].z, c[i].k, i);

        Put(c[i].x, 0, c[i].z+c[i].y, c[i].k, i);
        Put(c[i].x, b[3], c[i].z+c[i].y-b[3], c[i].k, i);
        Put(c[i].x, b[4], c[i].z+c[i].y-b[4], c[i].k, i);
        Put(c[i].x, c[i].y-(b[5]-c[i].z), b[5], c[i].k, i);
        Put(c[i].x, c[i].y-(b[6]-c[i].z), b[6], c[i].k, i);
      end;
    if c[i].z<>0 then
      begin
        Put(c[i].x+c[i].z, c[i].y, 0, c[i].k, i);
        Put(c[i].x+c[i].z-b[5], c[i].y, b[5], c[i].k, i);
        Put(c[i].x+c[i].z-b[6], c[i].y, b[6], c[i].k, i);
        Put(b[1], c[i].y, c[i].z-(b[1]-c[i].x), c[i].k, i);
        Put(b[2], c[i].y, c[i].z-(b[2]-c[i].x), c[i].k, i);

        Put(c[i].x, c[i].y+c[i].z, 0, c[i].k, i);
        Put(c[i].x, c[i].y+c[i].z-b[5], b[5], c[i].k, i);
        Put(c[i].x, c[i].y+c[i].z-b[6], b[6], c[i].k, i);
        Put(c[i].x, b[3], c[i].z-(b[3]-c[i].y), c[i].k, i);
        Put(c[i].x, b[4], c[i].z-(b[4]-c[i].y), c[i].k, i);
      end;
    if i mod 100000 = 0 then
      l:=l;
  end;

writeln(br);
End.
