#include<bits/stdc++.h>
using namespace std;
const int md=1e9+7;
int n,c,a[405],b[405],dp[405][405],f[405];
bool calc(int aa,int bb)
{
	memset(f,0,sizeof(f));
	for(int i=aa;i<=bb;i++)
	{
		int s=1;
		for(int j=0;j<=c;j++)
		{
			f[j]=((f[j]+s)%md+md)%md;
			s=1ll*s*i%md;
		}
	}
	return true;
}
int main()
{
	scanf("%d%d",&n,&c);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	for(int i=1;i<=n;i++)scanf("%d",&b[i]);
	calc(a[1],b[1]);
	for(int i=0;i<=c;i++)dp[1][i]=f[i];
	for(int i=2;i<=n;i++)
	{
		calc(a[i],b[i]);
		for(int j=0;j<=c;j++)for(int k=0;k<=j;k++)dp[i][j]=(dp[i][j]+1ll*dp[i-1][k]*f[j-k]%md)%md;
	}
	printf("%d\n",dp[n][c]);
	return 0;
}