#include "bits/stdc++.h"
using namespace std;
#define fr(i,n) for(int i=0;i<n;i++)
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define int long long
const int mod=1e9+7,MX=1e5+10;
inline int mult(int a,int b){return (1ll*a*b)%mod;}
int fact[MX],inv[MX],invfact[MX];
void init_INV(){
fact[0] = invfact[0] = fact[1] = invfact[1] = inv[1] = 1;
for (int i = 2; i < MX; i++) {
fact[i] = mult(fact[i - 1], i);
inv[i] = mult(inv[mod % i], mod - mod / i);
invfact[i] = mult(invfact[i - 1], inv[i]);
}
}
int nCr(int n,int r){
if(r < 0 or n < r) return 0;
n = fact[n] * invfact[n-r] % mod;
n = n * invfact[r] % mod;
return n;
}
int n,a1,a2,b1,b2,c1,c2,dp[11][11][11][11][11][11][3];
int cal(int aa1, int aa2, int bb1, int bb2, int cc1,int cc2, int cur){
if(aa1 < 0 or aa2 < 0 or bb1 < 0 or bb2 < 0 or cc1 < 0 or cc2 < 0)
return 0;
if(aa1 == 0 and aa2 == 0 and bb1 == 0 and bb2 == 0 and cc1 == 0 and cc2 == 0)
return 1;
int &ref = dp[aa1][aa2][bb1][bb2][cc1][cc2][cur];
if(ref != -1) return ref;
if(cur == 1){
return ref = (
cal(aa1, aa2, bb1 - 1, bb2, cc1, cc2, 0) +
cal(aa1, aa2, bb1, bb2 - 1,cc1, cc2, 2)
) % mod;
}
else if(cur == 0){
return ref = (
cal(aa1-1, aa2, bb1, bb2, cc1,cc2, 1) +
cal(aa1, aa2 - 1, bb1, bb2, cc1,cc2, 2)
) % mod;
}
else{
return ref = (
cal(aa1, aa2, bb1, bb2, cc1-1, cc2, 0) +
cal(aa1, aa2, bb1, bb2, cc1, cc2 - 1,1)
) % mod;
}
return 0;
}
void solve(){
cin >> n >> a1 >> a2 >> b1 >> b2 >> c1 >> c2;
int ans = 0;
rep(i,0,a1){
rep(j,0,a2){
rep(k,0,b1){
rep(l,0,b2){
rep(m,0,c1){
rep(z,0,c2){
int mul = (cal(i,j,k,l,m,z,0)+cal(i,j,k,l,m,z,1)+cal(i,j,k,l,m,z,2)) % mod;
int diff = n - i - j - k - l - m - z;
ans = (ans + nCr(n-1,diff-1)*mul % mod) % mod;
}
}
}
}
}
}
ans %= mod;
if(ans < 0) ans += mod;
cout << ans << "\n";
}
int32_t main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
init_INV();
memset(dp,-1,sizeof dp);
int tst = 1; while(tst--){
solve();
}
}