#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] = Tổng 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 = 0; i < n; i++) {
for (int n1 = 0; n1 <= i; n1++) {
for (int n2 = 0; n1 + n2 <= i; n2++) {
int n3 = i - n1 - n2;
ll cur_x = a * n1 + c * n2 + e * n3, cur_y = b * n1 + d * n2 + f * n3;
// Bước thứ i + 1
// Đi 1 bước loại 1
if (!obstacles.count({cur_x + a, cur_y + b})) {
add(dp[i + 1][n1 + 1][n2], dp[i][n1][n2]);
}
// Đi 1 bước loại 2
if (!obstacles.count({cur_x + c, cur_y + d})) {
add(dp[i + 1][n1][n2 + 1], dp[i][n1][n2]);
}
// Đi 1 bước loại 3
if (!obstacles.count({cur_x + e, cur_y + f})) {
add(dp[i + 1][n1][n2], dp[i][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+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGxsLCBsbD4gaWk7ICAKCmNvbnN0IGludCBJTkYgPSAxZTk7ICAKY29uc3QgbGwgTElORiA9IDFlMTg7ICAKCmNvbnN0IGludCBNT0QgPSA5OTgyNDQzNTM7IApjb25zdCBpbnQgTiA9IDNlMiArIDU7IAoKdm9pZCBhZGQoaW50JiBhLCBpbnQgYikgewoJYSArPSBiOyAKCWlmIChhID49IE1PRCkgYSAtPSBNT0Q7IAp9CgppbnQgbiwgbTsgICAKbGwgYSwgYiwgYywgZCwgZSwgZjsgCm1hcDxpaSwgYm9vbD4gb2JzdGFjbGVzOyAKCmludCBkcFtOXVtOXVtOXTsgLy8gZHBbaV1bbjFdW24yXSA9IFThu5VuZyBz4buRIMSRxrDhu51uZyDEkWkgZ+G7k20gaSBixrDhu5tjLCB0cm9uZyDEkcOzIMSRw6MgxJFpIG4xIGLGsOG7m2MgbG/huqFpIDEgdsOgIG4yIGLGsOG7m2MgbG/huqFpIDIKCQkJCSAvLyBUYSBjw7MgbjEgKyBuMiArIG4zID0gaSAKCQkJCSAvLyAgPT4gICAgICAgICAgICAgbjMgPSBpIC0gbjEgLSBuMgoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gbTsgCgljaW4gPj4gYSA+PiBiID4+IGMgPj4gZCA+PiBlID4+IGY7IAoKCWZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CgkJbGwgeCwgeTsgCgkJY2luID4+IHggPj4geTsgCgkJb2JzdGFjbGVzW3t4LCB5fV0gPSB0cnVlOyAKCX0KCglkcFswXVswXVswXSA9IDE7ICAgCglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewoJCWZvciAoaW50IG4xID0gMDsgbjEgPD0gaTsgbjErKykgewoJCQlmb3IgKGludCBuMiA9IDA7IG4xICsgbjIgPD0gaTsgbjIrKykgewoJCQkJaW50IG4zID0gaSAtIG4xIC0gbjI7ICAgCgkJCQlsbCBjdXJfeCA9IGEgKiBuMSArIGMgKiBuMiArIGUgKiBuMywgY3VyX3kgPSBiICogbjEgKyBkICogbjIgKyBmICogbjM7IAoJCQkJLy8gQsaw4bubYyB0aOG7qSBpICsgMQoJCQkJLy8gxJBpIDEgYsaw4bubYyBsb+G6oWkgMSAKCQkJCWlmICghb2JzdGFjbGVzLmNvdW50KHtjdXJfeCArIGEsIGN1cl95ICsgYn0pKSB7CgkJCQkJYWRkKGRwW2kgKyAxXVtuMSArIDFdW24yXSwgZHBbaV1bbjFdW24yXSk7ICAKCQkJCX0KCQkJCS8vIMSQaSAxIGLGsOG7m2MgbG/huqFpIDIKCQkJCWlmICghb2JzdGFjbGVzLmNvdW50KHtjdXJfeCArIGMsIGN1cl95ICsgZH0pKSB7CgkJCQkJYWRkKGRwW2kgKyAxXVtuMV1bbjIgKyAxXSwgZHBbaV1bbjFdW24yXSk7IAoJCQkJfQoJCQkJLy8gxJBpIDEgYsaw4bubYyBsb+G6oWkgMwoJCQkJaWYgKCFvYnN0YWNsZXMuY291bnQoe2N1cl94ICsgZSwgY3VyX3kgKyBmfSkpIHsKCQkJCQlhZGQoZHBbaSArIDFdW24xXVtuMl0sIGRwW2ldW24xXVtuMl0pOwoJCQkJfQoJCQl9CgkJfQoJfQoKCWludCBhbnMgPSAwOyAgCglmb3IgKGludCBuMSA9IDA7IG4xIDw9IG47IG4xKyspIHsKCQlmb3IgKGludCBuMiA9IDA7IG4xICsgbjIgPD0gbjsgbjIrKykgewoJCQlhZGQoYW5zLCBkcFtuXVtuMV1bbjJdKTsgCgkJfQoJfQoKCWNvdXQgPDwgYW5zIDw8ICdcbic7Cn0=