#include "hexagon.h"
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
typedef __int128_t ll;
typedef vector<ll> vl;
ll const MOD = 1e9 + 7;
ll calc_area(int N, vi &D, vi &L) {
ll area2 = 6LL * N - 3LL * (N-2), area = 0, y = 1e10;
vl C1 = {-1,0,6,6,0,-6,-6},C2 = {-1,0,3,0,0,3,0}, C3 = {-1,-1,0,0,1,0,0}, C4 = {-1,1,1,0,-1,-1,0};
// area %= MOD;
for(int i = 0;i < N;i++){
area += (C1[D[i]] * L[i]) * y + (C2[D[i]] * L[i]) * L[i];
area2 += ll(L[i] - 1) * 3;
// area %= MOD;
// area += MOD;
// area %= MOD;
y += C4[D[i]] * L[i];
// y %= MOD;
// y += MOD;
// y %= MOD;
}
if(area < 0) area = -area;
return (area + area2)/6;
}
int draw_territory(int N, int A, int B, vi D, vi L) {
ll Ar = (calc_area(N,D,L) * A) % MOD;
return Ar;
}