#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
#define FOR(i, a, b) for(LL i = (a); i < (b); i++)
#define REP(i, a, b) for(LL i = (a); i <= (b); i++)
#define FORD(i, a, b) for(LL i = (a); i > (b); i--)
#define REPD(i, a, b) for(LL i = (a); i >= (b); i--)
#define SZ(a) (int((a).size()))
#define ALL(a) (a).begin(), (a).end()
#define ALLD(a) (a).rbegin(), (a).rend()
#define PB push_back
#define MP make_pair
#define LL long long
#define ULL unsigned long long
#define LD long double
#define PLL pair<LL, LL>
#define FI first
#define SE second
#define VTLL vector<long long>
#define VTLD vector<long double>
#define TOLOWER(s) transform((s).begin(), (s).end(), (s).begin(), ::tolower)
#define TOUPPER(s) transform((s).begin(), (s).end(), (s).begin(), ::toupper)
#define MIN(v) *min_element((v).begin(), (v).end())
#define MAX(v) *max_element((v).begin(), (v).end())
#define LB(c, x) distance((c).begin(), lower_bound(ALL(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(ALL(c), (x)))
#define UNIQUE(x) sort(ALL(x)), x.erase(unique(ALL(x)), x.end()), x.shrink_to_fit()
template <typename T>
T SUM(const vector<T> a) {
T sum = 0;
for (T v : a) sum += v;
return sum;
}
#define MS(a, x) memset(a, x, sizeof(a))
#define FID(x) fixed << setprecision(x)
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define ___Dang_Nhat_Tinh___ signed main()
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define FILE(name) if (fopen(name".inp", "r")) {freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout);}
template <typename T>
void debug_val(const T &val) { cerr << val; }
template <typename T1, typename T2>
void debug_val(const pair<T1, T2> &p) {
cerr << "(";
debug_val(p.first);
cerr << ", ";
debug_val(p.second);
cerr << ")";
}
template <typename T>
void debug_val(const vector<T> &v) {
cerr << "[";
for (size_t i = 0; i < v.size(); ++i) {
if (i) cerr << ", ";
debug_val(v[i]);
}
cerr << "]";
}
template <typename T>
void debug_val(const set<T> &s) {
cerr << "{";
bool first = true;
for (const auto &x : s) {
if (!first) cerr << ", ";
debug_val(x);
first = false;
}
cerr << "}";
}
template <typename T>
void debug_val(const multiset<T> &s) {
cerr << "{";
bool first = true;
for (const auto &x : s) {
if (!first) cerr << ", ";
debug_val(x);
first = false;
}
cerr << "}";
}
template <typename K, typename V>
void debug_val(const map<K, V> &m) {
cerr << "{";
bool first = true;
for (const auto &kv : m) {
if (!first) cerr << ", ";
debug_val(kv);
first = false;
}
cerr << "}";
}
template<typename T>
void dbg(T x) { debug_val(x); cerr << '\n'; }
template<typename T, typename... Args>
void dbg(T x, Args... args) {
debug_val(x); cerr << ", ";
dbg(args...);
}
#define DEBUG(...) cerr << "[" << #__VA_ARGS__ << "] = ", dbg(__VA_ARGS__)
LL lcm(LL a, LL b) { return a / __gcd(a, b) * b; }
LL max(LL a, LL b) { return a > b ? a : b; }
LL min(LL a, LL b) { return a < b ? a : b; }
const LD PI = 3.1415926535897;
const LL MAX = 2e5 + 7;
const LL MOD = 1e9 + 7;
const LL LIM = 1e4 + 5;
LL frac[MAX], finv[MAX];
LL power(LL a, LL n) {
LL res = 1;
while (n > 0) {
if (n & 1) res = res * a % MOD;
a = a * a % MOD;
n /= 2;
}
return res;
}
void precompute() {
frac[0] = 1;
FOR(i, 1, MAX) frac[i] = frac[i - 1] * i % MOD;
finv[MAX - 1] = power(frac[MAX - 1], MOD - 2);
REPD(i, MAX - 2, 0) finv[i] = finv[i + 1] * (i + 1) % MOD;
}
LL C(LL n, LL k) {
if (k < 0 || k > n) return 0;
return frac[n] * finv[k] % MOD * finv[n - k] % MOD;
}
___Dang_Nhat_Tinh___ {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
precompute();
LL m, q; cin >> m >> q;
while (q--) {
LL x, y, a, b, c, d;
cin >> x >> y >> a >> b >> c >> d;
LL n = x + y;
LL res = a * C(n - 1, y) % MOD;
res += b * C(n - 2, y - 1) % MOD;
res += c * C(n - 3, y - 2) % MOD;
res += d * C(n - 4, y - 3) % MOD;
res %= MOD;
cout << res << '\n';
}
cerr << "Time elapsed: " << TIME << " s.\n";
return (0 ^ 0);
}
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgovLyNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4MixibWksYm1pMixsemNudCxwb3BjbnQiKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBGT1IoaSwgYSwgYikgZm9yKExMIGkgPSAoYSk7IGkgPCAoYik7IGkrKykKI2RlZmluZSBSRVAoaSwgYSwgYikgZm9yKExMIGkgPSAoYSk7IGkgPD0gKGIpOyBpKyspCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IoTEwgaSA9IChhKTsgaSA+IChiKTsgaS0tKQojZGVmaW5lIFJFUEQoaSwgYSwgYikgZm9yKExMIGkgPSAoYSk7IGkgPj0gKGIpOyBpLS0pCiNkZWZpbmUgU1ooYSkgKGludCgoYSkuc2l6ZSgpKSkKI2RlZmluZSBBTEwoYSkgKGEpLmJlZ2luKCksIChhKS5lbmQoKQojZGVmaW5lIEFMTEQoYSkgKGEpLnJiZWdpbigpLCAoYSkucmVuZCgpCiNkZWZpbmUgUEIgcHVzaF9iYWNrCiNkZWZpbmUgTVAgbWFrZV9wYWlyCiNkZWZpbmUgTEwgbG9uZyBsb25nCiNkZWZpbmUgVUxMIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIExEIGxvbmcgZG91YmxlCiNkZWZpbmUgUExMIHBhaXI8TEwsIExMPgojZGVmaW5lIEZJIGZpcnN0CiNkZWZpbmUgU0Ugc2Vjb25kCiNkZWZpbmUgVlRMTCB2ZWN0b3I8bG9uZyBsb25nPgojZGVmaW5lIFZUTEQgdmVjdG9yPGxvbmcgZG91YmxlPgojZGVmaW5lIFRPTE9XRVIocykgdHJhbnNmb3JtKChzKS5iZWdpbigpLCAocykuZW5kKCksIChzKS5iZWdpbigpLCA6OnRvbG93ZXIpCiNkZWZpbmUgVE9VUFBFUihzKSB0cmFuc2Zvcm0oKHMpLmJlZ2luKCksIChzKS5lbmQoKSwgKHMpLmJlZ2luKCksIDo6dG91cHBlcikKI2RlZmluZSBNSU4odikgKm1pbl9lbGVtZW50KCh2KS5iZWdpbigpLCAodikuZW5kKCkpCiNkZWZpbmUgTUFYKHYpICptYXhfZWxlbWVudCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKQojZGVmaW5lIExCKGMsIHgpIGRpc3RhbmNlKChjKS5iZWdpbigpLCBsb3dlcl9ib3VuZChBTEwoYyksICh4KSkpCiNkZWZpbmUgVUIoYywgeCkgZGlzdGFuY2UoKGMpLmJlZ2luKCksIHVwcGVyX2JvdW5kKEFMTChjKSwgKHgpKSkKI2RlZmluZSBVTklRVUUoeCkgc29ydChBTEwoeCkpLCB4LmVyYXNlKHVuaXF1ZShBTEwoeCkpLCB4LmVuZCgpKSwgeC5zaHJpbmtfdG9fZml0KCkKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClQgU1VNKGNvbnN0IHZlY3RvcjxUPiBhKSB7CiAgICBUIHN1bSA9IDA7CiAgICBmb3IgKFQgdiA6IGEpIHN1bSArPSB2OwogICAgcmV0dXJuIHN1bTsKfQojZGVmaW5lIE1TKGEsIHgpIG1lbXNldChhLCB4LCBzaXplb2YoYSkpCiNkZWZpbmUgRklEKHgpIGZpeGVkIDw8IHNldHByZWNpc2lvbih4KQojZGVmaW5lIE1BU0soaSkgKDFMTCA8PCAoaSkpCiNkZWZpbmUgQklUKHgsIGkpICgoKHgpID4+IChpKSkgJiAxKQojZGVmaW5lIF9fX0RhbmdfTmhhdF9UaW5oX19fIHNpZ25lZCBtYWluKCkKI2RlZmluZSBUSU1FICAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKQojZGVmaW5lIEZJTEUobmFtZSkgaWYgKGZvcGVuKG5hbWUiLmlucCIsICJyIikpIHtmcmVvcGVuKG5hbWUiLmlucCIsICJyIiwgc3RkaW4pOyBmcmVvcGVuKG5hbWUiLm91dCIsICJ3Iiwgc3Rkb3V0KTt9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBkZWJ1Z192YWwoY29uc3QgVCAmdmFsKSB7IGNlcnIgPDwgdmFsOyB9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgp2b2lkIGRlYnVnX3ZhbChjb25zdCBwYWlyPFQxLCBUMj4gJnApIHsKICAgIGNlcnIgPDwgIigiOwogICAgZGVidWdfdmFsKHAuZmlyc3QpOwogICAgY2VyciA8PCAiLCAiOwogICAgZGVidWdfdmFsKHAuc2Vjb25kKTsKICAgIGNlcnIgPDwgIikiOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBkZWJ1Z192YWwoY29uc3QgdmVjdG9yPFQ+ICZ2KSB7CiAgICBjZXJyIDw8ICJbIjsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7ICsraSkgewogICAgICAgIGlmIChpKSBjZXJyIDw8ICIsICI7CiAgICAgICAgZGVidWdfdmFsKHZbaV0pOwogICAgfQogICAgY2VyciA8PCAiXSI7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIGRlYnVnX3ZhbChjb25zdCBzZXQ8VD4gJnMpIHsKICAgIGNlcnIgPDwgInsiOwogICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICBmb3IgKGNvbnN0IGF1dG8gJnggOiBzKSB7CiAgICAgICAgaWYgKCFmaXJzdCkgY2VyciA8PCAiLCAiOwogICAgICAgIGRlYnVnX3ZhbCh4KTsKICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgfQogICAgY2VyciA8PCAifSI7Cn0KdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnZvaWQgZGVidWdfdmFsKGNvbnN0IG11bHRpc2V0PFQ+ICZzKSB7CiAgICBjZXJyIDw8ICJ7IjsKICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgZm9yIChjb25zdCBhdXRvICZ4IDogcykgewogICAgICAgIGlmICghZmlyc3QpIGNlcnIgPDwgIiwgIjsKICAgICAgICBkZWJ1Z192YWwoeCk7CiAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgIH0KICAgIGNlcnIgPDwgIn0iOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4Kdm9pZCBkZWJ1Z192YWwoY29uc3QgbWFwPEssIFY+ICZtKSB7CiAgICBjZXJyIDw8ICJ7IjsKICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgZm9yIChjb25zdCBhdXRvICZrdiA6IG0pIHsKICAgICAgICBpZiAoIWZpcnN0KSBjZXJyIDw8ICIsICI7CiAgICAgICAgZGVidWdfdmFsKGt2KTsKICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgfQogICAgY2VyciA8PCAifSI7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgZGJnKFQgeCkgeyBkZWJ1Z192YWwoeCk7IGNlcnIgPDwgJ1xuJzsgfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4Kdm9pZCBkYmcoVCB4LCBBcmdzLi4uIGFyZ3MpIHsKICAgIGRlYnVnX3ZhbCh4KTsgY2VyciA8PCAiLCAiOwogICAgZGJnKGFyZ3MuLi4pOwp9CiNkZWZpbmUgREVCVUcoLi4uKSBjZXJyIDw8ICJbIiA8PCAjX19WQV9BUkdTX18gPDwgIl0gPSAiLCBkYmcoX19WQV9BUkdTX18pCgpMTCBsY20oTEwgYSwgTEwgYikgeyByZXR1cm4gYSAvIF9fZ2NkKGEsIGIpICogYjsgfQpMTCBtYXgoTEwgYSwgTEwgYikgeyByZXR1cm4gYSA+IGIgPyBhIDogYjsgfQpMTCBtaW4oTEwgYSwgTEwgYikgeyByZXR1cm4gYSA8IGIgPyBhIDogYjsgfQpjb25zdCBMRCBQSSA9IDMuMTQxNTkyNjUzNTg5NzsKY29uc3QgTEwgTUFYID0gMmU1ICsgNzsKY29uc3QgTEwgTU9EID0gMWU5ICsgNzsKY29uc3QgTEwgTElNID0gMWU0ICsgNTsKCkxMIGZyYWNbTUFYXSwgZmludltNQVhdOwpMTCBwb3dlcihMTCBhLCBMTCBuKSB7CiAgICBMTCByZXMgPSAxOwogICAgd2hpbGUgKG4gPiAwKSB7CiAgICAgICAgaWYgKG4gJiAxKSByZXMgPSByZXMgKiBhICUgTU9EOwogICAgICAgIGEgPSBhICogYSAlIE1PRDsKICAgICAgICBuIC89IDI7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9IAoKdm9pZCBwcmVjb21wdXRlKCkgewogICAgZnJhY1swXSA9IDE7CiAgICBGT1IoaSwgMSwgTUFYKSBmcmFjW2ldID0gZnJhY1tpIC0gMV0gKiBpICUgTU9EOwogICAgZmludltNQVggLSAxXSA9IHBvd2VyKGZyYWNbTUFYIC0gMV0sIE1PRCAtIDIpOwogICAgUkVQRChpLCBNQVggLSAyLCAwKSBmaW52W2ldID0gZmludltpICsgMV0gKiAoaSArIDEpICUgTU9EOwp9CgpMTCBDKExMIG4sIExMIGspIHsKICAgIGlmIChrIDwgMCB8fCBrID4gbikgcmV0dXJuIDA7CiAgICByZXR1cm4gZnJhY1tuXSAqIGZpbnZba10gJSBNT0QgKiBmaW52W24gLSBrXSAlIE1PRDsKfQoKX19fRGFuZ19OaGF0X1RpbmhfX18gewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY291dC50aWUobnVsbHB0cik7CgogICAgcHJlY29tcHV0ZSgpOwogICAgTEwgbSwgcTsgY2luID4+IG0gPj4gcTsKICAgIHdoaWxlIChxLS0pIHsKICAgICAgICBMTCB4LCB5LCBhLCBiLCBjLCBkOwogICAgICAgIGNpbiA+PiB4ID4+IHkgPj4gYSA+PiBiID4+IGMgPj4gZDsKICAgICAgICBMTCBuID0geCArIHk7CiAgICAgICAgTEwgcmVzID0gYSAqIEMobiAtIDEsIHkpICUgTU9EOwogICAgICAgIHJlcyArPSBiICogQyhuIC0gMiwgeSAtIDEpICUgTU9EOwogICAgICAgIHJlcyArPSBjICogQyhuIC0gMywgeSAtIDIpICUgTU9EOwogICAgICAgIHJlcyArPSBkICogQyhuIC0gNCwgeSAtIDMpICUgTU9EOwogICAgICAgIHJlcyAlPSBNT0Q7CiAgICAgICAgY291dCA8PCByZXMgPDwgJ1xuJzsKICAgIH0KCiAgICBjZXJyIDw8ICJUaW1lIGVsYXBzZWQ6ICIgPDwgVElNRSA8PCAiIHMuXG4iOwogICAgcmV0dXJuICgwIF4gMCk7Cn0=