#include<bits/stdc++.h>
#define Mod 1000000007ll
#define Val(x) ((((long long)x) % Mod + Mod) % Mod)
#define maxn 405
using namespace std;
int arr[maxn][maxn];
int A[maxn],B[maxn];
int dp[maxn][maxn];
inline int cost(int i,int j,int k) {
	return Val(arr[j][k]-arr[i-1][k]);
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	for(int i=1;i<=400;i++)
		for(int j=0,fac=1;j<=400;j++,fac=Val(fac*i))
			arr[i][j] = fac;
	for(int i=2;i<=400;i++)
		for(int j=0;j<=400;j++)
			arr[i][j] = Val(arr[i][j]+arr[i-1][j]);
		
	int n,c;
	cin >> n >> c;
	for(int i=1;i<=n;i++)	cin >> A[i];
	for(int i=1;i<=n;i++)	cin >> B[i];
	
	dp[0][0] = 1;
	for(int i=1;i<=n;i++)
		for(int j=0;j<=c;j++)
			for(int k=0;k<=j;k++)
				dp[i][j] = Val(dp[i-1][j-k]*cost(A[i],B[i],k)+dp[i][j]);
				
	cout << dp[n][c] << endl;
	return 0;
}
