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

#include <cstdio>

using namespace std;

#define MAXN 256

int V, K;
int a1, a2, b1, b2, c1, c2;
bool used[MAXN][MAXN][MAXN];
long long ANS;

void rec(int level, int a, int b, int c) {
    
    if (level > K) {
        return;
    }
    if (used[a][b][c]) {
        return;
    }

    if (a == 1 || b == 1 || c == 1) {
        ANS++;
        return;
    }

    used[a][b][c] = true;
    
    int give, take;    

/////////////TAKEN FROM A
    //a gives

    if (a > a1) {
        give = a - a1;
        rec(level+1, a-give, b+give, c);
        rec(level+1, a-give, b, c+give);
    }
    if (a > a2) {
        give = a - a2;
        rec(level+1, a-give, b+give, c);
        rec(level+1, a-give, b, c+give);
    }

    rec(level+1, 0, b+a, c);
    rec(level+1, 0, b, c+a);

    //b takes
    take = b1 - b;
    if (take > 0 && take < a && take != a-a1 && take != a-a2 && take != a) {
        rec(level+1, a-take, b+take, c);
    }
    take = b2 - b;
    if (take > 0 && take < a && take != a-a1 && take != a-a2 && take != a) {
        rec(level+1, a-take, b+take, c);
    }

    //c takes
    take = c1 - c;
    if (take > 0 && take < a && take != a-a1 && take != a-a2 && take != a) {
        rec(level+1, a-take, b, c+take);
    }
    take = c2 - c;
    if (take > 0 && take < a && take != a-a1 && take != a-a2 && take != a) {
        rec(level+1, a-take, b, c+take);
    }
    
/////////////TAKEN FROM B
    //b gives

    if (b > b1) {
        give = b - b1;
        rec(level+1, a+give, b-give, c);
        rec(level+1, a, b-give, c+give);
    }
    if (b > b2) {
        give = b - b2;
        rec(level+1, a+give, b-give, c);
        rec(level+1, a, b-give, c+give);
    }

    rec(level+1, a+b, 0, c);
    rec(level+1, a, 0, c+b);

    //a takes
    take = a1 - a;
    if (take > 0 && take < b && take != b-b1 && take != b-b2 && take !=b) {
        rec(level+1, a+take, b-take, c);
    }
    take = a2 - a;
    if (take > 0 && take < b && take != b-b1 && take != b-b2 && take !=b) {
        rec(level+1, a+take, b-take, c);
    }

    //c takes
    take = c1 - c;
    if (take > 0 && take < b && take != b-b1 && take != b-b2 && take !=b) {
        rec(level+1, a, b-take, c+take);
    }
    take = c2 - c;
    if (take > 0 && take < b && take != b-b1 && take != b-b2 && take !=b) {
        rec(level+1, a, b-take, c+take);
    }

/////////////TAKEN FROM C

    //c gives
    if (c > c1) {
        give = c - c1;
        rec(level+1, a+give, b, c-give);
        rec(level+1, a, b+give, c-give);
    }       
    if (c > c2) {
        give = c - c2;
        rec(level+1, a+give, b, c-give);
        rec(level+1, a, b+give, c-give);
    }

    rec(level+1, a+c, b, 0);
    rec(level+1, a, b+c, 0);
    
    //a takes
    take = a1 - a; 
    if (take > 0 && take < c && take != c-c1 && take != c-c2 && take != c) {
        rec(level+1, a+take, b, c-take);
    }
    take = a2 - a;
    if (take > 0 && take < c && take != c-c1 && take != c-c2 && take != c) {
        rec(level+1, a+take, b, c-take);
    }

    //b takes
    take = b1 - b;
    if (take > 0 && take < c && take != c-c1 && take != c-c2 && take != c) {
        rec(level+1, a, b+take, c-take);
    }
    take = b2 - b;
    if (take > 0 && take < c && take != c-c1 && take != c-c2 && take != c) {
        rec(level+1, a, b+take, c-take);
    }

//END
    used[a][b][c] = false;
    
    return;
}

int main() {
    
    scanf("%d%d", &V, &K);
    scanf("%d%d%d%d%d%d", &a1, &a2, &b1, &b2, &c1, &c2);
    
    ANS = 0;
    
    rec(0, V, 0, 0);
    
    printf("%lld\n", ANS);
    
    return 0;
}
