#include <iostream>
#include <stdio.h>
#include <set>
#include <cstring>
#include <vector>
#include <map>

#define mod 1000000007

using namespace std;

int cnt, c[30000];
int decode [1000];

struct State {
    vector <int> a;

    State (int A1, int A2, int A3, int A4, int A5) {
        a.clear();

        a.push_back(A1);
        a.push_back(A2);
        a.push_back(A3);
        a.push_back(A4);
        a.push_back(A5);
    }
    State () {}

    bool operator < (State tmp) const {
        a < tmp.a;
    }
};
int code (int v) {
    if (!c[v])
        c[v] = ++cnt, decode[cnt] = v;

    return c[v];
}

map <State, int> DP;

int dp (State s) {
    if (DP.count (s) != 0)
        return DP[s];

    int A1 = s.a[0];
    int A2 = s.a[1];
    int A3 = s.a[2];
    int A4 = s.a[3];
    int A5 = s.a[4];

    int a1 = decode[A1],
        a2 = decode[A2],
        a3 = decode[A3],
        a4 = decode[A4],
        a5 = decode[A5];
    //c
    if (!a1 and !a2 and !a3 and !a4 and !a5) return 1;


    int &res = DP[s];

    res = 0;

    if (a1 != 0 and a2 != 0) {
        if (a1 & 1 and a2 & 1)
            res = (res + dp (State(code (a1 - 1), code (a2 - 1), A3, A4, A5)))%mod;
        res = (res + dp (State(code (a1/2), code (a2/2), A3, A4, A5)))%mod;
    }

    if (a2 != 0 and a3 != 0) {
        if (a2 & 1 and a3 & 1)
            res = (res + dp (State(A1, code (a2 - 1), code (a3 - 1), A4, A5)))%mod;
        res = (res + dp (State(A1, code (a2/2), code (a3/2), A4, A5)))%mod;
    }
    if (a3 != 0 and a4 != 0) {
        if (a3 & 1 and a4 & 1)
            res = (res + dp (State(A1, A2, code (a3 - 1), code (a4 - 1), A5)))%mod;
        res = (res + dp (State(A1, A2, code (a3/2), code (a4/2), A5)))%mod;
    }
    if (a4 != 0 and a5 != 0) {
        if (a4 & 1 and a5 & 1)
            res = (res + dp (State(A1, A2, A3, code (a4 - 1), code (a5 - 1))))%mod;
        res = (res + dp (State(A1, A2, A3, code (a4/2), code (a5/2))))%mod;
    }
    if (a1 != 0 and a5 != 0) {
        if (a1 & 1 and a5 & 1)
            res = (res + dp (State(code (a1 - 1),  A2, A3, A4, code (a5 - 1))))%mod;
        res = (res + dp (State(code (a1/2), A2, A3, A4, code (a5/2))))%mod;
    }

    return res;
}

int main () {
   // freopen ("zero.in", "r", stdin);

    int A1, A2, A3, A4, A5;

    scanf ("%d %d %d %d %d", &A1, &A2, &A3, &A4, &A5);

    printf ("%d\n", dp (State(code (A1), code (A2), code (A3), code (A4), code (A5))));
}
