/*
* Author: Geeza
*/
#include <bits/stdc++.h>
#define ld long double
#define ll long long
#define pb push_back
#define fin(a, n) for(int i = a; i < n; i++)
#define fjn(a, n) for(int j = a; j < n; j++)
#define all(a) a.begin(),a.end()
#define allr(a) a.rbegin(),a.rend()
#define FAST ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;
const double PI = acos(-1);
const int N = 2e3+10;
const ll oo = 0x3f3f3f3f3f3f3f3f;
const int MOD = 1000000007, inf = 1e6;
string di[] = {"D","L", "U", "R", "UL", "UR", "DL", "DR"};
int dx[] = {+1, +0, +0, -1, -1, -1, +1, +1};
int dy[] = {+0, -1, +1, +0, -1, +1, -1, +1};
char dc[] = {'D', 'L', 'R', 'U'};
ll r;
ll mult(ll a, ll b) {
return ((a%r) * (b%r)) % r;
}
void mul(ll a[2][2], ll b[2][2], ll res[2][2]) {
res[0][0] = (mult(a[0][0], b[0][0]) + mult(a[0][1], b[1][0])) % r;
res[0][1] = (mult(a[0][0], b[0][1]) + mult(a[0][1], b[1][1])) % r;
res[1][0] = (mult(a[1][0], b[0][0]) + mult(a[1][1], b[1][0])) % r;
res[1][1] = (mult(a[1][0], b[0][1]) + mult(a[1][1], b[1][1])) % r;
}
ll id[2][2] = {{1,0},{0,1}};
struct node {
ll mat[2][2];
node() {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
mat[i][j] = id[i][j];
}
}
}
node(ll arr[2][2]) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
mat[i][j] = arr[i][j];
}
}
}
void change(ll arr[2][2]) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
mat[i][j] = arr[i][j];
}
}
}
};
struct segTree {
ll treeSize;
vector<node> tree;
segTree(ll n) {
treeSize = 1;
while (treeSize < n) treeSize <<= 1;
tree.resize(2 * treeSize, node());
}
node merge(node &l, node &r) {
node par;
mul(l.mat, r.mat, par.mat);
return par;
}
void set(ll arr[2][2], ll idx, ll i, ll l, ll r) {
if (r - l == 1) {
tree[i].change(arr);
return;
}
ll mid = l + (r - l) / 2;
if (idx < mid) set(arr, idx, 2 * i + 1, l, mid);
else set(arr, idx, 2 * i + 2, mid, r);
tree[i] = merge(tree[2 * i + 1], tree[2 * i + 2]);
}
void set(ll arr[2][2], ll idx) {
set(arr, idx, 0, 0, treeSize);
}
node get(ll lx, ll rx, ll i, ll l, ll r) {
if (lx <= l && rx >= r) return tree[i];
if (rx <= l || lx >= r) return node(id);
ll mid = l + (r - l)/2;
node lf = get(lx, rx, 2*i+1, l, mid);
node ri = get(lx, rx, 2*i+2, mid, r);
return merge(lf, ri);
}
void get(ll l, ll r, ll res[2][2]) {
node ans = get(l, r, 0, 0, treeSize);
memcpy(res, ans.mat, sizeof(ll)*4);
}
};
void solve() {
ll n, m; cin >> r >> n >> m;
segTree st(n);
fin(0, n) {
ll v[2][2];
cin >> v[0][0] >> v[0][1] >> v[1][0] >> v[1][1];
st.set(v, i);
}
while(m--) {
ll a, b; cin >> a >> b;
a--;
ll ans[2][2];
st.get(a, b, ans);
for(int i = 0; i < 2; i++){
for(int j = 0; j < 2; j++){
cout << ans[i][j] << " ";
}
cout << "\n";
}
cout << "\n";
}
}
int main() {
FAST;
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int tt = 1; //cin >> tt;
while(tt--){
solve();
}
return 0;
}
LyoKKiBBdXRob3I6IEdlZXphCiovCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaW4oYSwgbikgZm9yKGludCBpID0gYTsgaSA8IG47IGkrKykKI2RlZmluZSBmam4oYSwgbikgZm9yKGludCBqID0gYTsgaiA8IG47IGorKykKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBhbGxyKGEpIGEucmJlZ2luKCksYS5yZW5kKCkKI2RlZmluZSBGQVNUIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGRvdWJsZSBQSSA9IGFjb3MoLTEpOwpjb25zdCBpbnQgTiA9IDJlMysxMDsKY29uc3QgbGwgb28gPSAweDNmM2YzZjNmM2YzZjNmM2Y7CmNvbnN0IGludCBNT0QgPSAxMDAwMDAwMDA3LCBpbmYgPSAxZTY7CgpzdHJpbmcgZGlbXSA9IHsiRCIsIkwiLCAiVSIsICJSIiwgIlVMIiwgIlVSIiwgIkRMIiwgIkRSIn07CmludCBkeFtdID0geysxLCArMCwgKzAsIC0xLCAtMSwgLTEsICsxLCArMX07CmludCBkeVtdID0geyswLCAtMSwgKzEsICswLCAtMSwgKzEsIC0xLCArMX07CmNoYXIgZGNbXSA9IHsnRCcsICdMJywgJ1InLCAnVSd9OwoKbGwgcjsKCmxsIG11bHQobGwgYSwgbGwgYikgewogICAgcmV0dXJuICgoYSVyKSAqIChiJXIpKSAlIHI7Cn0KCnZvaWQgbXVsKGxsIGFbMl1bMl0sIGxsIGJbMl1bMl0sIGxsIHJlc1syXVsyXSkgewogICAgcmVzWzBdWzBdID0gKG11bHQoYVswXVswXSwgYlswXVswXSkgKyBtdWx0KGFbMF1bMV0sIGJbMV1bMF0pKSAlIHI7CiAgICByZXNbMF1bMV0gPSAobXVsdChhWzBdWzBdLCBiWzBdWzFdKSArIG11bHQoYVswXVsxXSwgYlsxXVsxXSkpICUgcjsKICAgIHJlc1sxXVswXSA9IChtdWx0KGFbMV1bMF0sIGJbMF1bMF0pICsgbXVsdChhWzFdWzFdLCBiWzFdWzBdKSkgJSByOwogICAgcmVzWzFdWzFdID0gKG11bHQoYVsxXVswXSwgYlswXVsxXSkgKyBtdWx0KGFbMV1bMV0sIGJbMV1bMV0pKSAlIHI7Cn0KCmxsIGlkWzJdWzJdID0ge3sxLDB9LHswLDF9fTsKCnN0cnVjdCBub2RlIHsKICAgIGxsIG1hdFsyXVsyXTsKCiAgICBub2RlKCkgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMjsgaisrKSB7CiAgICAgICAgICAgICAgICBtYXRbaV1bal0gPSBpZFtpXVtqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBub2RlKGxsIGFyclsyXVsyXSkgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMjsgaisrKSB7CiAgICAgICAgICAgICAgICBtYXRbaV1bal0gPSBhcnJbaV1bal07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgdm9pZCBjaGFuZ2UobGwgYXJyWzJdWzJdKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAyOyBqKyspIHsKICAgICAgICAgICAgICAgIG1hdFtpXVtqXSA9IGFycltpXVtqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfTsKCnN0cnVjdCBzZWdUcmVlIHsKICAgIGxsIHRyZWVTaXplOwogICAgdmVjdG9yPG5vZGU+IHRyZWU7CgogICAgc2VnVHJlZShsbCBuKSB7CiAgICAgICAgdHJlZVNpemUgPSAxOwogICAgICAgIHdoaWxlICh0cmVlU2l6ZSA8IG4pIHRyZWVTaXplIDw8PSAxOwogICAgICAgIHRyZWUucmVzaXplKDIgKiB0cmVlU2l6ZSwgbm9kZSgpKTsKICAgIH0KCiAgICBub2RlIG1lcmdlKG5vZGUgJmwsIG5vZGUgJnIpIHsKICAgICAgICBub2RlIHBhcjsKICAgICAgICBtdWwobC5tYXQsIHIubWF0LCBwYXIubWF0KTsKICAgICAgICByZXR1cm4gcGFyOwogICAgfQoKICAgIHZvaWQgc2V0KGxsIGFyclsyXVsyXSwgbGwgaWR4LCBsbCBpLCBsbCBsLCBsbCByKSB7CiAgICAgICAgaWYgKHIgLSBsID09IDEpIHsKICAgICAgICAgICAgdHJlZVtpXS5jaGFuZ2UoYXJyKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsbCBtaWQgPSBsICsgKHIgLSBsKSAvIDI7CiAgICAgICAgaWYgKGlkeCA8IG1pZCkgc2V0KGFyciwgaWR4LCAyICogaSArIDEsIGwsIG1pZCk7CiAgICAgICAgZWxzZSBzZXQoYXJyLCBpZHgsIDIgKiBpICsgMiwgbWlkLCByKTsKICAgICAgICB0cmVlW2ldID0gbWVyZ2UodHJlZVsyICogaSArIDFdLCB0cmVlWzIgKiBpICsgMl0pOwogICAgfQoKICAgIHZvaWQgc2V0KGxsIGFyclsyXVsyXSwgbGwgaWR4KSB7CiAgICAgICAgc2V0KGFyciwgaWR4LCAwLCAwLCB0cmVlU2l6ZSk7CiAgICB9CgogICAgbm9kZSBnZXQobGwgbHgsIGxsIHJ4LCBsbCBpLCBsbCBsLCBsbCByKSB7CiAgICAgICAgaWYgKGx4IDw9IGwgJiYgcnggPj0gcikgcmV0dXJuIHRyZWVbaV07CiAgICAgICAgaWYgKHJ4IDw9IGwgfHwgbHggPj0gcikgcmV0dXJuIG5vZGUoaWQpOwogICAgICAgIGxsIG1pZCA9IGwgKyAociAtIGwpLzI7CiAgICAgICAgbm9kZSBsZiA9IGdldChseCwgcngsIDIqaSsxLCBsLCBtaWQpOwogICAgICAgIG5vZGUgcmkgPSBnZXQobHgsIHJ4LCAyKmkrMiwgbWlkLCByKTsKICAgICAgICByZXR1cm4gbWVyZ2UobGYsIHJpKTsKICAgIH0KCiAgICB2b2lkIGdldChsbCBsLCBsbCByLCBsbCByZXNbMl1bMl0pIHsKICAgICAgICBub2RlIGFucyA9IGdldChsLCByLCAwLCAwLCB0cmVlU2l6ZSk7CiAgICAgICAgbWVtY3B5KHJlcywgYW5zLm1hdCwgc2l6ZW9mKGxsKSo0KTsKICAgIH0KfTsKCnZvaWQgc29sdmUoKSB7CiAgICBsbCBuLCBtOyBjaW4gPj4gciA+PiBuID4+IG07CiAgICBzZWdUcmVlIHN0KG4pOwogICAgZmluKDAsIG4pIHsKICAgICAgICBsbCB2WzJdWzJdOwogICAgICAgIGNpbiA+PiB2WzBdWzBdID4+IHZbMF1bMV0gPj4gdlsxXVswXSA+PiB2WzFdWzFdOwogICAgICAgIHN0LnNldCh2LCBpKTsKICAgIH0KCiAgICB3aGlsZShtLS0pIHsKICAgICAgICBsbCBhLCBiOyBjaW4gPj4gYSA+PiBiOwogICAgICAgIGEtLTsKICAgICAgICBsbCBhbnNbMl1bMl07CiAgICAgICAgc3QuZ2V0KGEsIGIsIGFucyk7CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IDI7IGkrKyl7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCAyOyBqKyspewogICAgICAgICAgICAgICAgY291dCA8PCBhbnNbaV1bal0gPDwgIiAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQgPDwgIlxuIjsKICAgICAgICB9CiAgICAgICAgY291dCA8PCAiXG4iOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIEZBU1Q7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKI2VuZGlmCiAgICBpbnQgdHQgPSAxOyAvL2NpbiA+PiB0dDsKICAgIHdoaWxlKHR0LS0pewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==