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

#define fu(i, a, b) for (int i = a; i <= b; i++)
#define int long long
#define task "test"

const int MAXN = 1e6 + 5;
const int MOD = 1e9 + 7;
const int BASE = 35;
string a,b;
int HASHA[MAXN], HASHB[MAXN], BASEPOW[MAXN];
int lenA, lenB;
int q;

int getA(int l, int r) {
    return (HASHA[r] - HASHA[l - 1] * BASEPOW[r - l + 1] % MOD + MOD) % MOD;
}
int getB(int l, int r) {
    return (HASHB[r] - HASHB[l - 1] * BASEPOW[r - l + 1] % MOD + MOD) % MOD;
}


void init() {
    cin >> lenA >> lenB >> a >> b >> q;
    BASEPOW[0] = 1;
    int MAX = 1e6;
    fu(i,1,MAX) BASEPOW[i] = (BASEPOW[i-1]*BASE)%MOD;
    a = "&" + a, b = "&" + b;
    fu(i,1,lenA) HASHA[i] = (HASHA[i-1]*BASE + (a[i] - 'a' + 1))%MOD;
    fu(i,1,lenB) HASHB[i] = (HASHB[i-1]*BASE + (b[i] - 'a' + 1))%MOD;
}

void solve() {
    while(q--) {
        int l,r,u,v; cin >> l >> r >> u >> v;
        int len1 = r - l + 1, len2 = v - u + 1;
        int len = min(len1, len2), ans = 0;
        int left = 0, right = len;
        while(left<=right) {
            int mid = (left + right) / 2;
            if(getA(l,l+mid-1) == getB(u, u+mid-1)) {
                ans = mid;
                left = mid + 1;
            }
            else right = mid - 1;
        }
        if (ans == len) {
            if (len1 == len2) cout << "=";
            else if (len1 < len2) cout << "<";
            else cout << ">";
        } 
        else {
            char chA = a[l + ans], chB = b[u + ans];
            if (chA > chB) cout << ">";
            else if (chA < chB) cout << "<";
            else cout << "="; 
        }
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    if (fopen(task ".inp", "r")) freopen(task ".inp", "r", stdin), freopen(task ".out", "w", stdout);
    init();
    solve();
}
