#include <bits/stdc++.h>
using namespace std;

const int MOD = 1e9 + 7;

int n, m;
int a[405], b[405];
int d[405][405];
int pw[405][405], sp[405][405];

int main()
{
    scanf("%d%d", &n, &m);

    for(int i = 1; i <= n ; ++i) scanf("%d", &a[i]);
    for(int i = 1; i <= n ; ++i) scanf("%d", &b[i]);

    for(int i = 1; i <= 400 ; ++i){
        pw[i][0] = 1;
        for(int j = 1; j <= 400 ; ++j)
            pw[i][j] = 1LL * pw[i][j - 1] * i % MOD;
    }

    for(int i = 1; i <= 400 ; ++i){
        for(int j = 0; j <= 400 ; ++j){
            sp[i][j] = pw[i][j] + sp[i - 1][j];
            if(sp[i][j] >= MOD) sp[i][j] -= MOD;
        }
    }

    d[n + 1][0] = 1;
    for(int i = n; i >= 1 ; --i)
        for(int j = 0; j <= m ; ++j)
            for(int k = 0; k <= j ; ++k)
                d[i][j] = (d[i][j] + 1LL * d[i + 1][j - k] * (sp[b[i]][k] - sp[a[i] - 1][k] + MOD)) % MOD;


    printf("%d", d[1][m]);

    return 0;
}
