using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; class TEST{ static void Main(){ Sol mySol =new Sol(); mySol.Solve(); } } class Sol{ public void Solve(){ long mod = (long)1e9+7; long[][] C = new long[100][]; for(int i=0;i<100;i++) C[i] = new long[100]; C[0][0] = 1; for(int i=1;i<100;i++){ C[i][0] = 1; for(int j=1;j<=i;j++){ C[i][j] = C[i-1][j] + C[i-1][j-1]; if(C[i][j] >= mod) C[i][j] -= mod; } } long ans = 0; for(int a=0;a<=N[0];a++){ for(int b=0;b<=N[1];b++){ for(int c=0;c<=N[2];c++){ for(int d=0;d<=N[3];d++){ for(int e=0;e<=N[4];e++){ var tot = a + b + c + d + e; var xt = X[0]*a + X[1]*b + X[2]*c + X[3]*d + X[4]*e; var yt = Y[0]*a + Y[1]*b + Y[2]*c + Y[3]*d + Y[4]*e; if(xt != Gx || yt != Gy) continue; long m = 1; m *= C[tot][a]; tot -= a; if(m >= mod) m %= mod; m *= C[tot][b]; tot -= b; if(m >= mod) m %= mod; m *= C[tot][c]; tot -= c; if(m >= mod) m %= mod; m *= C[tot][d]; tot -= d; if(m >= mod) m %= mod; m *= C[tot][e]; tot -= e; if(m >= mod) m %= mod; ans += m; if(ans >= mod) ans -= mod; } } } } } Console.WriteLine(ans); } int Gx,Gy,K; int[] X,Y,N; public Sol(){ var d = ria(); Gx = d[0]; Gy = d[1]; K = d[2]; X = new int[5]; Y = new int[5]; N = new int[5]; for(int i=0;iint.Parse(e));} static long[] rla(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>long.Parse(e));} static double[] rda(char sep=' '){return Array.ConvertAll(Console.ReadLine().Split(sep),e=>double.Parse(e));} }