#include <cassert>
#include <cstdint>
#include <iostream>
#include <vector>

#define REP_(i, a_, b_, a, b, ...) \
    for (int i = (a), lim##i = (b); i < lim##i; i++)
#define REP(i, ...) REP_(i, __VA_ARGS__, __VA_ARGS__, 0, __VA_ARGS__)

using namespace std;
using Int = int64_t;

template <class T>
struct Matrix {
    vector<vector<T>> val;
    Matrix(vector<vector<T>> vec) : val(vec) {}
    Matrix(int64_t n = 1, int64_t m = 1, T v = 0) : val(n, vector<T>(m, v)) {}
    void init(int64_t n, int64_t m, T v = 0) { val.assign(n, vector<T>(m, v)); }
    size_t size() const { return val.size(); }
    vector<T> &operator[](int64_t i) { return val[i]; }
    const vector<T> &operator[](int64_t i) const { return val[i]; }
};

template <class T>
Matrix<T> operator*(const Matrix<T> &A, const Matrix<T> &B) {
    assert(A.size() == B[0].size());
    Matrix<T> R(A.size(), B[0].size());
    for (int64_t i = 0; i < A.size(); ++i)
        for (int64_t j = 0; j < B[0].size(); ++j)
            for (int64_t k = 0; k < B.size(); ++k) R[i][j] += A[i][k] * B[k][j];

    return R;
}

template <class T>
Matrix<T> operator+(const Matrix<T> &A, const Matrix<T> &B) {
    assert(A.size() == B.size() && A[0].size() == B[0].size());
    Matrix<T> R(A.size(), A[0].size());
    for (int64_t i = 0; i < A.size(); ++i) {
        for (int64_t j = 0; j < A[0].size(); ++j) {
            R[i][j] = A[i][j] + B[i][j];
        }
    }
    return R;
}

template <class T>
Matrix<T> operator-(const Matrix<T> &A, const Matrix<T> &B) {
    assert(A.size() == B.size() && A[0].size() == B[0].size());
    Matrix<T> R(A.size(), A[0].size());
    for (int64_t i = 0; i < A.size(); ++i) {
        for (int64_t j = 0; j < A[0].size(); ++j) {
            R[i][j] = A[i][j] - B[i][j];
        }
    }
    return R;
}

template <class T>
vector<T> operator*(const Matrix<T> &A, const vector<T> &B) {
    vector<T> v(A.size());
    for (int64_t i = 0; i < A.size(); ++i) {
        for (int64_t k = 0; k < B.size(); ++k) {
            v[i] += A[i][k] * B[k];
        }
    }
    return v;
}

template <class T>
bool operator==(const Matrix<T> &A, const Matrix<T> &B) {
    assert(A.size() == B.size() && A[0].size() == B[0].size());
    for (int64_t i = 0; i < A.size(); ++i) {
        for (int64_t j = 0; j < A[0].size(); ++j) {
            if (A[i][j] != B[i][j]) {
                return false;
            }
        }
    }
    return true;
}

int main() {
    Int N;
    cin >> N;
    vector<Int> X(N), Y(N);
    REP(i, N) cin >> X[i] >> Y[i];
    Int M;
    cin >> M;
    vector<Matrix<Int>> mats;
    Matrix<Int> mat(3, 3, 0);
    mat[0][0] = 1;
    mat[1][1] = 1;
    mat[2][2] = 1;
    mats.push_back(mat);
    REP(i, M) {
        Int t;
        cin >> t;
        if (t == 1) {
            Matrix<Int> A({{0, 1, 0}, {-1, 0, 0}, {0, 0, 1}});
            mat = A * mat;
        } else if (t == 2) {
            Matrix<Int> A({{0, -1, 0}, {1, 0, 0}, {0, 0, 1}});
            mat = A * mat;
        } else if (t == 3) {
            Int p;
            cin >> p;
            Matrix<Int> A({{-1, 0, 2 * p}, {0, 1, 0}, {0, 0, 1}});
            mat = A * mat;
        } else {
            Int p;
            cin >> p;
            Matrix<Int> A({{1, 0, 0}, {0, -1, 2 * p}, {0, 0, 1}});
            mat = A * mat;
        }
        mats.push_back(mat);
    }

    Int Q;
    cin >> Q;
    REP(i, Q) {
        Int a, b;
        cin >> a >> b;
        --b;
        auto res = mats[a] * vector<Int>({X[b], Y[b], 1});
        cout << res[0] << " " << res[1] << endl;
    }
}
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define n_l '\n'

#ifndef ONLINE_JUDGE
#define dbg(...) cout << "[" << #__VA_ARGS__ << "]: "; cout << to_string(__VA_ARGS__) << endl
template <typename T, size_t N> int SIZE(const T (&t)[N]){ return N; } template<typename T> int SIZE(const T &t){ return t.size(); } string to_string(const string s, int x1=0, int x2=1e9){ return '"' + ((x1 < s.size()) ? s.substr(x1, x2-x1+1) : "") + '"'; } string to_string(const char* s) { return to_string((string) s); } string to_string(const bool b) { return (b ? "true" : "false"); } string to_string(const char c){ return string({c}); } template<size_t N> string to_string(const bitset<N> &b, int x1=0, int x2=1e9){ string t = ""; for(int __iii__ = min(x1,SIZE(b)),  __jjj__ = min(x2, SIZE(b)-1); __iii__ <= __jjj__; ++__iii__){ t += b[__iii__] + '0'; } return '"' + t + '"'; } template <typename A, typename... C> string to_string(const A (&v), int x1=0, int x2=1e9, C... coords); int l_v_l_v_l = 0, t_a_b_s = 0; template <typename A, typename B> string to_string(const pair<A, B> &p) { l_v_l_v_l++; string res = "(" + to_string(p.first) + ", " + to_string(p.second) + ")"; l_v_l_v_l--; return res; } template <typename A, typename... C> string to_string(const A (&v), int x1, int x2, C... coords) { int rnk = rank<A>::value; string tab(t_a_b_s, ' '); string res = ""; bool first = true; if(l_v_l_v_l == 0) res += n_l; res += tab + "["; x1 = min(x1, SIZE(v)), x2 = min(x2, SIZE(v)); auto l = begin(v); advance(l, x1); auto r = l; advance(r, (x2-x1) + (x2 < SIZE(v))); for (auto e = l; e != r; e = next(e)) { if (!first) { res += ", "; } first = false; l_v_l_v_l++; if(e != l){ if(rnk > 1) { res += n_l; t_a_b_s = l_v_l_v_l; }; } else{ t_a_b_s = 0; } res += to_string(*e, coords...); l_v_l_v_l--; } res += "]"; if(l_v_l_v_l == 0) res += n_l; return res; } void dbgm(){;} template<typename Heads, typename... Tails> void dbgm(Heads H, Tails... T){ cout << to_string(H) << " | "; dbgm(T...); } 
#define dbgm(...) cout << "[" << #__VA_ARGS__ << "]: "; dbgm(__VA_ARGS__); cout << endl
#endif

#define pb push_back
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define sz(x) ((int)(x).size())
#define forn(i,n) for(int i=0;i<n;i++)
#define for1(i,n) for(int i=1;i<=n;i++)
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef double db;
typedef vector<vi> vvi;
const ll mod=1000000007;
const ll N=200005; //check this
int dx[] = {-1, 0, 1, 0, 1, 1, -1, -1};
int dy[] = {0, -1, 0, 1, 1, -1, 1, -1};

ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll powb(ll a,ll b) {ll res=1;a ; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a;a=a*a;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--){
    	int n;cin >> n;
    	cout << (n%2 ? "Black" : "White");
    }
}
