#include "hexagon.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define pb push_back
#define FOR(i, a, b) for(ll i = (a); i < (b); ++i)
#define FORD(i, a, b) for(ll i = (a); i >= (b); --i)
#define ok cout << "ok\n"
const ll mod = 1e9 + 7;
ll modpow(ll a, ll b, ll m = mod) {
a %= m;
ll c = 1;
while(b) {
if(b & 1) c = c * a % m;
a = a * a % m;
b >>= 1;
}
return c;
}
ll modinv(ll a, ll m = mod) {
return modpow(a, m - 2, m);
}
int draw_territory(int N, int A, int B, std::vector<int> D, std::vector<int> L) {
ll n = N;
ll a = A;
ll b = B;
vector<ll> d(n), l(n);
FOR(i, 0, n) {
d[i] = D[i];
l[i] = L[i];
}
ll ans = 0;
ll m = l[0] + 1;
ans = (ans + m * (m + 1) % mod * modinv(2) % mod * a % mod) % mod;
ans = (ans + (m * (m + 1) % mod * (2 * m + 1) % mod * modinv(6) % mod - m * (m + 1) % mod * modinv(2) % mod + mod) * b % mod) % mod;
return ans;
}