#include <iostream>
#define llint long long 
#define mod 1000000007

using namespace std;

llint N, C;
llint A[405], B[405];
llint p[405][405];
llint f[405][405];
llint dp[405][405];

int main(void)
{
	cin >> N >> C;
	for(int i = 1; i <= N; i++) cin >> A[i];
	for(int i = 1; i <= N; i++) cin >> B[i];
	
	for(int i = 1; i <= 400; i++){
		llint pro = 1;
		for(int j = 0; j <= 400; j++){
			p[i][j] = pro;
			pro *= i;
			pro %= mod;
		}
	}
	
	for(int i = 1; i <= 400; i++){
		for(int j = 0; j <= 400; j++){
			llint sum = 0;
			for(int k = A[i]; k <= B[i]; k++){
				sum += p[k][j];
				sum %= mod;
			}
			f[i][j] = sum;
		}
	}
	
	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] += dp[i-1][k] * f[i][j-k];
				dp[i][j] %= mod;
			}
		}
	}
	
	cout << dp[N][C] << endl;
	return 0;
}