#include <bits/stdc++.h>
using namespace std;

#define vi vector<int>
#define v2i vector<vi>
#define v3i vector<v2i>
#define quicksilver ios_base::sync_with_stdio(0), cin.tie(0)

const int N = 2e5 + 5;
int r, n, n_, m;
int x[2][2];
int **IDENTITY;
int ***st;

void f(int sti, int **a, int **b)
{
    for (int i = 0; i < 2; i++)
        for (int j = 0; j < 2; j++)
        {
            for (int k = 0; k < 2; k++)
                st[sti][i][j] = (st[sti][i][j] + a[i][k] * b[k][j]);

            st[sti][i][j] %= r;
        }
}

void f1(int sti, int ll, int rr, int ix, int **v)
{
    if (ll == rr)
        f(sti, v, IDENTITY);
    else
    {
        int m = (ll + rr) >> 1;
        if (ix <= m)
            f1(2 * sti + 1, ll, m, ix, v);
        else
            f1(2 * sti + 2, m + 1, rr, ix, v);

        f(sti, st[2 * sti + 1], st[2 * sti + 2]);
    }
}

int **f2(int sti, int ll, int rr, int lq, int rq)
{
    int **C = new int *[2];
    C[0] = new int[2];
    C[1] = new int[2];
    if (rr < lq || rq < ll)
    {
        C[0][0] = IDENTITY[0][0];
        C[0][1] = IDENTITY[0][1];
        C[1][0] = IDENTITY[1][0];
        C[1][1] = IDENTITY[1][1];

        return C;
    }
    else if (lq <= ll && rr <= rq)
    {
        C[0][0] = st[sti][0][0];
        C[0][1] = st[sti][0][1];
        C[1][0] = st[sti][1][0];
        C[1][1] = st[sti][1][1];

        return C;
    }
    else
    {
        int m = (ll + rr) >> 1;
        int **A = f2(2 * sti + 1, ll, m, lq, rq);
        int **B = f2(2 * sti + 2, m + 1, rr, lq, rq);

        for (int i = 0; i < 2; i++)
            for (int j = 0; j < 2; j++)
            {
                C[i][j] = 0;
                for (int k = 0; k < 2; k++)
                    C[i][j] = (C[i][j] + A[i][k] * B[k][j]);

                C[i][j] %= r;
            }

        return C;
    }
}

signed main()
{
    quicksilver;
    cin >> r >> n >> m;
    IDENTITY = new int *[2];
    IDENTITY[0] = new int[2], IDENTITY[1] = new int[2];
    IDENTITY[0][0] = IDENTITY[1][1] = 1;
    IDENTITY[0][1] = IDENTITY[1][0] = 0;

    st = new int **[4 * N];
    for (int i = 0; i < 4 * N; i++)
    {
        st[i] = new int *[2];
        st[i][0] = new int[2], st[i][1] = new int[2];
        st[i][0][0] = st[i][0][1] = st[i][1][0] = st[i][1][1] = 0;
    }

    n_ = 1 << (__lg(n) + 1);
    if ((n & (n - 1)) == 0)
        n_ >>= 1;

    int **x = new int *[2];
    x[0] = new int[2], x[1] = new int[2];

    for (int i = 0; i < n; i++)
    {
        cin >> x[0][0] >> x[0][1] >> x[1][0] >> x[1][1];

        f1(0, 0, n_ - 1, i, x);
    }

    cout << "\n\n\n";

    for (int i = 0; i < m; i++)
    {
        int l, r;
        cin >> l >> r;
        l--, r--;

        int **R = new int *[2];
        R[0] = new int[2], R[1] = new int[2];
        int **RT = f2(0, 0, n_ - 1, l, r);

        cout << RT[0][0] << ' ' << RT[0][1] << '\n';
        cout << RT[1][0] << ' ' << RT[1][1] << '\n';
        cout << '\n';
    }

    return 0;
}