#include #define PREP(i, s, x) for(ll i = (s); i < (x); i++) #define MREP(i, s, x) for(ll i = (s); i >= (x); i--) #define REP(i, x) PREP(i, 0, x) using namespace std; using ll = long long; using P = pair; template inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); } template inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); } // variable ------------------------------------------- constexpr ll INF = (1ll << 59); constexpr ll MOD = 1000000007ll; // structure ------------------------------------------ // function ------------------------------------------- void print(vector a, vector b){ cout << "("; REP(i, a.size()){ if(i != 0){ cout << " + "; } cout << a[i]; if(i != 0){ cout << "x"; if(i >= 2){ cout << "^" << i; } } } cout << ")("; REP(i, b.size()){ if(i != 0){ cout << " + "; } cout << b[i]; if(i != 0){ cout << "x"; if(i >= 2){ cout << "^" << i; } } } cout << ")" << endl; return; } // main ----------------------------------------------- int main() { ll n; cin >> n; vector a(n+1), b(n+1); REP(i, n+1){ cin >> a[i]; } REP(i, n+1){ cin >> b[i]; } // print(a, b); vector c(2*n+1); REP(i, n+1){ REP(j, n+1){ c[i+j] += a[i]*b[j]%MOD; c[i+j] %= MOD; } } ll sum = 0; REP(i, n+1){ sum += c[i]; sum %= MOD; // cout << c[i] << endl; } cout << sum << endl; return 0; }