#include<cstdio>
#include<algorithm>
using namespace std;
#define MAXN 405
#define LL long long
#define MO 1000000007
LL dp[MAXN][MAXN],p[MAXN][MAXN];
int a[MAXN],b[MAXN];
LL PowMod(LL a,LL b)
{
	LL ret=1;
	while(b)
	{
		if(b&1) ret=ret*a%MO;
		a=a*a%MO;
		b>>=1;
	}
	return ret;
}
void Pre()
{
	for(int i=1;i<=400;i++)
		for(int j=0;j<=400;j++)
			p[i][j]=PowMod(i,j);
	for(int j=0;j<=400;j++)
		for(int i=1;i<=400;i++)
		{
			p[i][j]+=p[i-1][j];
			p[i][j]%=MO;
		}
}
int main()
{
	int n,c;
	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);
	Pre();
	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][j-k]*((p[b[i]][k]-p[a[i]-1][k]+MO)%MO)%MO;
				dp[i][j]%=MO;
			}
	printf("%lld\n",dp[n][c]);
}