#include<bits/stdc++.h>
using namespace std;
#define MAX 5005
int mod=1e9+7;

int add(int a,int b){
  return (a+b)%mod;
}

int N,L;
int x[MAX],a[MAX];
int dp[2][MAX];
int main(){
  cin>>N>>L;
  for(int i=0;i<N;i++)cin>>x[i],x[i]++;
  for(int i=0;i<N;i++)cin>>a[i];

  int ans=0;
  dp[1][0]=1;
  for(int i=0;i<N;i++){
    int ai=i&1,bi=1-ai;
    int sum=dp[bi][0];
    
    dp[ai][0]=0;
    for(int j=1;j<=L;j++){
      if(j<x[i]){
        dp[ai][j]=0;
      }else if(a[i]==0&&j!=x[i]){
        dp[ai][j]=0;
      }else if(a[i]>0&&(j-x[i])%a[i]!=0){
        dp[ai][j]=0;
      }else{
        dp[ai][j]=sum;
      }
      sum=add(sum,dp[bi][j]);

      if(i==N-1){
        ans=add(ans,dp[ai][j]);
      }
    }
  }
  cout<<ans<<endl;
  return 0;
}