#include <bits/stdc++.h>
#define FOR(i, a, b) for (int i = a; i <= b; ++i)
#define FORD(i, a, b) for (int i = a; i >= b; --i)
#define ll long long
#define ii pair <int, int>
#define fi first
#define se second
using namespace std;
const int N = 15e3 + 5;
int n, type, m;
ii S, T;
vector <ii> dif[6];
struct meteor {
int x, y, r, t;
void input() {cin >> x >> y >> r >> t;}
} Meteor[N];
void nhap() {
cin >> type >> n >> m;
FOR(i, 1, m) Meteor[i].input();
cin >> S.fi >> S.se >> T.fi >> T.se;
FOR(k, 0, 5) FOR(x, -k, k) FOR(y, -k, k) {
if (abs(x) + abs(y) <= k) dif[k].push_back({x, y});
}
}
namespace sub1 {
int mark[505][505], cnt, ans;
void solve() {
cnt = ans = 0;
FOR(t, 0, 59) {
FOR(i, 1, m) {
int d = (Meteor[i].t + t) % Meteor[i].r;
if (t) {
int last = (d - 1 + Meteor[i].r) % Meteor[i].r;
for (auto [dx, dy] : dif[last]) {
ii pos = {Meteor[i].x + dx, Meteor[i].y + dy};
if (pos.fi < 1 || pos.fi > n || pos.se < 1 || pos.se > n) continue;
if (--mark[pos.fi][pos.se] == 0) --cnt;
}
}
for (auto [dx, dy] : dif[d]) {
ii pos = {Meteor[i].x + dx, Meteor[i].y + dy};
if (pos.fi < 1 || pos.fi > n || pos.se < 1 || pos.se > n) continue;
if (++mark[pos.fi][pos.se] == 1) ++cnt;
}
}
ans = max(ans, cnt);
}
cout << ans;
}
}
namespace sub2 {
bool mark[505][505][60];
int dist[505][505][60];
int dx[] = {0, -1, 0, 1, 0};
int dy[] = {1, 0, -1, 0, 0};
const int INF = 1e9;
void solve() {
if (S == T) {
cout << 0;
return ;
}
FOR(t, 0, 59) FOR(i, 1, m) {
int d = (Meteor[i].t + t) % Meteor[i].r;
for (auto [dx_, dy_] : dif[d]) {
ii pos = {Meteor[i].x + dx_, Meteor[i].y + dy_};
if (pos.fi < 1 || pos.fi > n || pos.se < 1 || pos.se > n) continue;
mark[pos.fi][pos.se][t] = 1;
}
}
FOR(i, 1, n) FOR(j, 1, n) FOR(t, 0, 59) dist[i][j][t] = INF;
queue<tuple<int,int,int>> q;
q.push({S.fi, S.se, 0});
dist[S.fi][S.se][0] = 0;
while (!q.empty()) {
auto [x, y, t] = q.front(); q.pop();
FOR(i, 0, 4) {
int xn = x + dx[i];
int yn = y + dy[i];
int tn = (t + 1) % 60;
if (xn < 1 || xn > n || yn < 1 || yn > n) continue;
if (mark[xn][yn][tn]) continue;
if (dist[xn][yn][tn] != INF) continue;
dist[xn][yn][tn] = dist[x][y][t] + 1;
q.push({xn, yn, tn});
}
}
int ans = INF;
FOR(i, 0, 59) ans = min(ans, dist[T.fi][T.se][i]);
cout << ans;
}
}
void giai() {
if (type == 1) sub1::solve();
else sub2::solve();
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
#define name "test"
if (fopen(name".inp", "r")) {
freopen(name".inp", "r", stdin);
freopen(name".out", "w", stdout);
}
nhap();
giai();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA8PSBiOyArK2kpCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA+PSBiOyAtLWkpCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaWkgcGFpciA8aW50LCBpbnQ+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDE1ZTMgKyA1OwppbnQgbiwgdHlwZSwgbTsKaWkgUywgVDsKdmVjdG9yIDxpaT4gZGlmWzZdOwoKc3RydWN0IG1ldGVvciB7CiAgICBpbnQgeCwgeSwgciwgdDsKICAgIHZvaWQgaW5wdXQoKSB7Y2luID4+IHggPj4geSA+PiByID4+IHQ7fQp9IE1ldGVvcltOXTsKCnZvaWQgbmhhcCgpIHsKICAgIGNpbiA+PiB0eXBlID4+IG4gPj4gbTsKICAgIEZPUihpLCAxLCBtKSBNZXRlb3JbaV0uaW5wdXQoKTsKICAgIGNpbiA+PiBTLmZpID4+IFMuc2UgPj4gVC5maSA+PiBULnNlOwoKICAgIEZPUihrLCAwLCA1KSBGT1IoeCwgLWssIGspIEZPUih5LCAtaywgaykgewogICAgICAgIGlmIChhYnMoeCkgKyBhYnMoeSkgPD0gaykgZGlmW2tdLnB1c2hfYmFjayh7eCwgeX0pOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViMSB7CiAgICBpbnQgbWFya1s1MDVdWzUwNV0sIGNudCwgYW5zOwogICAgdm9pZCBzb2x2ZSgpIHsKICAgICAgICBjbnQgPSBhbnMgPSAwOwogICAgICAgIEZPUih0LCAwLCA1OSkgewogICAgICAgICAgICBGT1IoaSwgMSwgbSkgewogICAgICAgICAgICAgICAgaW50IGQgPSAoTWV0ZW9yW2ldLnQgKyB0KSAlIE1ldGVvcltpXS5yOwogICAgICAgICAgICAgICAgaWYgKHQpIHsKICAgICAgICAgICAgICAgICAgICBpbnQgbGFzdCA9IChkIC0gMSArIE1ldGVvcltpXS5yKSAlIE1ldGVvcltpXS5yOwogICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byBbZHgsIGR5XSA6IGRpZltsYXN0XSkgewogICAgICAgICAgICAgICAgICAgICAgICBpaSBwb3MgPSB7TWV0ZW9yW2ldLnggKyBkeCwgTWV0ZW9yW2ldLnkgKyBkeX07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3MuZmkgPCAxIHx8IHBvcy5maSA+IG4gfHwgcG9zLnNlIDwgMSB8fCBwb3Muc2UgPiBuKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0tbWFya1twb3MuZmldW3Bvcy5zZV0gPT0gMCkgLS1jbnQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAoYXV0byBbZHgsIGR5XSA6IGRpZltkXSkgewogICAgICAgICAgICAgICAgICAgIGlpIHBvcyA9IHtNZXRlb3JbaV0ueCArIGR4LCBNZXRlb3JbaV0ueSArIGR5fTsKICAgICAgICAgICAgICAgICAgICBpZiAocG9zLmZpIDwgMSB8fCBwb3MuZmkgPiBuIHx8IHBvcy5zZSA8IDEgfHwgcG9zLnNlID4gbikgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCsrbWFya1twb3MuZmldW3Bvcy5zZV0gPT0gMSkgKytjbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYW5zID0gbWF4KGFucywgY250KTsKICAgICAgICB9CgogICAgICAgIGNvdXQgPDwgYW5zOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViMiB7CiAgICBib29sIG1hcmtbNTA1XVs1MDVdWzYwXTsKICAgIGludCBkaXN0WzUwNV1bNTA1XVs2MF07CiAgICBpbnQgZHhbXSA9IHswLCAtMSwgMCwgMSwgMH07CiAgICBpbnQgZHlbXSA9IHsxLCAwLCAtMSwgMCwgMH07CiAgICBjb25zdCBpbnQgSU5GID0gMWU5OwoKICAgIHZvaWQgc29sdmUoKSB7CiAgICAgICAgaWYgKFMgPT0gVCkgewogICAgICAgICAgICBjb3V0IDw8IDA7CiAgICAgICAgICAgIHJldHVybiA7CiAgICAgICAgfQoKICAgICAgICBGT1IodCwgMCwgNTkpIEZPUihpLCAxLCBtKSB7CiAgICAgICAgICAgIGludCBkID0gKE1ldGVvcltpXS50ICsgdCkgJSBNZXRlb3JbaV0ucjsKICAgICAgICAgICAgZm9yIChhdXRvIFtkeF8sIGR5X10gOiBkaWZbZF0pIHsKICAgICAgICAgICAgICAgIGlpIHBvcyA9IHtNZXRlb3JbaV0ueCArIGR4XywgTWV0ZW9yW2ldLnkgKyBkeV99OwogICAgICAgICAgICAgICAgaWYgKHBvcy5maSA8IDEgfHwgcG9zLmZpID4gbiB8fCBwb3Muc2UgPCAxIHx8IHBvcy5zZSA+IG4pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgbWFya1twb3MuZmldW3Bvcy5zZV1bdF0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBGT1IoaSwgMSwgbikgRk9SKGosIDEsIG4pIEZPUih0LCAwLCA1OSkgZGlzdFtpXVtqXVt0XSA9IElORjsKCiAgICAgICAgcXVldWU8dHVwbGU8aW50LGludCxpbnQ+PiBxOwogICAgICAgIHEucHVzaCh7Uy5maSwgUy5zZSwgMH0pOwogICAgICAgIGRpc3RbUy5maV1bUy5zZV1bMF0gPSAwOwoKICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgICAgICBhdXRvIFt4LCB5LCB0XSA9IHEuZnJvbnQoKTsgcS5wb3AoKTsKCiAgICAgICAgICAgIEZPUihpLCAwLCA0KSB7CiAgICAgICAgICAgICAgICBpbnQgeG4gPSB4ICsgZHhbaV07CiAgICAgICAgICAgICAgICBpbnQgeW4gPSB5ICsgZHlbaV07CiAgICAgICAgICAgICAgICBpbnQgdG4gPSAodCArIDEpICUgNjA7CiAgICAgICAgICAgICAgICBpZiAoeG4gPCAxIHx8IHhuID4gbiB8fCB5biA8IDEgfHwgeW4gPiBuKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmIChtYXJrW3huXVt5bl1bdG5dKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmIChkaXN0W3huXVt5bl1bdG5dICE9IElORikgY29udGludWU7CiAgICAgICAgICAgICAgICBkaXN0W3huXVt5bl1bdG5dID0gZGlzdFt4XVt5XVt0XSArIDE7CiAgICAgICAgICAgICAgICBxLnB1c2goe3huLCB5biwgdG59KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaW50IGFucyA9IElORjsKICAgICAgICBGT1IoaSwgMCwgNTkpIGFucyA9IG1pbihhbnMsIGRpc3RbVC5maV1bVC5zZV1baV0pOwogICAgICAgIGNvdXQgPDwgYW5zOwogICAgfQp9Cgp2b2lkIGdpYWkoKSB7CiAgICBpZiAodHlwZSA9PSAxKSBzdWIxOjpzb2x2ZSgpOwogICAgZWxzZSBzdWIyOjpzb2x2ZSgpOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICAjZGVmaW5lIG5hbWUgInRlc3QiCgogICAgaWYgKGZvcGVuKG5hbWUiLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKG5hbWUiLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4obmFtZSIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIG5oYXAoKTsKICAgIGdpYWkoKTsKCiAgICByZXR1cm4gMDsKfQo=