#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int MOD = 998244353;
const int N = 3e2 + 5;
void add(int& a, int b) {
a += b;
if (a >= MOD) a -= MOD;
}
int n, m;
ll a, b, c, d, e, f;
map<ii, bool> obstacles;
int dp[N][N][N]; // dp[i][n1][n2] = Số đường đi gồm i bước, trong đó đã đi n1 bước loại 1 và n2 bước loại 2
// Ta có n1 + n2 + n3 = i
// => n3 = i - n1 - n2
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
cin >> a >> b >> c >> d >> e >> f;
for (int i = 0; i < m; i++) {
ll x, y;
cin >> x >> y;
obstacles[{x, y}] = true;
}
dp[0][0][0] = 1;
for (int i = 1; i <= n; i++) {
for (int n1 = 0; n1 <= i; n1++) {
for (int n2 = 0; n1 + n2 <= i; n2++) {
int n3 = i - n1 - n2;
// (x, y) chính là toạ độ hiện tại mà ta đang ở
ll x = a * n1 + c * n2 + e * n3, y = b * n1 + d * n2 + f * n3;
int& cur = dp[i][n1][n2];
cur = 0;
if (obstacles.count({x, y})) continue;
// Bước thứ i
// Đi bước loại 1
if (n1 > 0) add(cur, dp[i - 1][n1 - 1][n2]);
// Đi bước loại 2
if (n2 > 0) add(cur, dp[i - 1][n1][n2 - 1]);
// Đi bước loại 3
if (n3 > 0) add(cur, dp[i - 1][n1][n2]);
}
}
}
int ans = 0;
for (int n1 = 0; n1 <= n; n1++) {
for (int n2 = 0; n1 + n2 <= n; n2++) {
add(ans, dp[n][n1][n2]);
}
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGxsLCBsbD4gaWk7ICAKCmNvbnN0IGludCBJTkYgPSAxZTk7ICAKY29uc3QgbGwgTElORiA9IDFlMTg7ICAKCmNvbnN0IGludCBNT0QgPSA5OTgyNDQzNTM7IApjb25zdCBpbnQgTiA9IDNlMiArIDU7IAoKdm9pZCBhZGQoaW50JiBhLCBpbnQgYikgewoJYSArPSBiOyAKCWlmIChhID49IE1PRCkgYSAtPSBNT0Q7IAp9CgppbnQgbiwgbTsgICAKbGwgYSwgYiwgYywgZCwgZSwgZjsgCm1hcDxpaSwgYm9vbD4gb2JzdGFjbGVzOyAKCmludCBkcFtOXVtOXVtOXTsgLy8gZHBbaV1bbjFdW24yXSA9IFPhu5EgxJHGsOG7nW5nIMSRaSBn4buTbSBpIGLGsOG7m2MsIHRyb25nIMSRw7MgxJHDoyDEkWkgbjEgYsaw4bubYyBsb+G6oWkgMSB2w6AgbjIgYsaw4bubYyBsb+G6oWkgMgoJCQkJIC8vIFRhIGPDsyBuMSArIG4yICsgbjMgPSBpIAoJCQkJIC8vICA9PiAgICAgICAgICAgICBuMyA9IGkgLSBuMSAtIG4yCgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbiA+PiBtOyAKCWNpbiA+PiBhID4+IGIgPj4gYyA+PiBkID4+IGUgPj4gZjsgCgoJZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKCQlsbCB4LCB5OyAKCQljaW4gPj4geCA+PiB5OyAKCQlvYnN0YWNsZXNbe3gsIHl9XSA9IHRydWU7IAoJfQoKCWRwWzBdWzBdWzBdID0gMTsgICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWZvciAoaW50IG4xID0gMDsgbjEgPD0gaTsgbjErKykgewoJCQlmb3IgKGludCBuMiA9IDA7IG4xICsgbjIgPD0gaTsgbjIrKykgewoJCQkJaW50IG4zID0gaSAtIG4xIC0gbjI7ICAgCgkJCQkvLyAoeCwgeSkgY2jDrW5oIGzDoCB0b+G6oSDEkeG7mSBoaeG7h24gdOG6oWkgbcOgIHRhIMSRYW5nIOG7nwoJCQkJbGwgeCA9IGEgKiBuMSArIGMgKiBuMiArIGUgKiBuMywgeSA9IGIgKiBuMSArIGQgKiBuMiArIGYgKiBuMzsKCQkJCWludCYgY3VyID0gZHBbaV1bbjFdW24yXTsgCgkJCQljdXIgPSAwOyAKCQkJCWlmIChvYnN0YWNsZXMuY291bnQoe3gsIHl9KSkgY29udGludWU7ICAKCQkJCS8vIELGsOG7m2MgdGjhu6kgaSAKCQkJCS8vIMSQaSBixrDhu5tjIGxv4bqhaSAxIAoJCQkJaWYgKG4xID4gMCkgYWRkKGN1ciwgZHBbaSAtIDFdW24xIC0gMV1bbjJdKTsgIAoJCQkJLy8gxJBpIGLGsOG7m2MgbG/huqFpIDIKCQkJCWlmIChuMiA+IDApIGFkZChjdXIsIGRwW2kgLSAxXVtuMV1bbjIgLSAxXSk7IAoJCQkJLy8gxJBpIGLGsOG7m2MgbG/huqFpIDMKCQkJCWlmIChuMyA+IDApIGFkZChjdXIsIGRwW2kgLSAxXVtuMV1bbjJdKTsKCQkJfQoJCX0KCX0KCglpbnQgYW5zID0gMDsgIAoJZm9yIChpbnQgbjEgPSAwOyBuMSA8PSBuOyBuMSsrKSB7CgkJZm9yIChpbnQgbjIgPSAwOyBuMSArIG4yIDw9IG47IG4yKyspIHsKCQkJYWRkKGFucywgZHBbbl1bbjFdW24yXSk7IAoJCX0KCX0KCgljb3V0IDw8IGFucyA8PCAnXG4nOwp9