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

int c[1000][1000];
string cc = ".^v<>";

bool solve (int n, int m, int a, int b) {
    if (m & 1) {
        int t = min(b, n/2);
        if (t > 0) {
            for (int i = 0; i < t; i++) {
                c[i*2+(n&1)][0] = 1;
                c[i*2+(n&1)+1][0] = 2;
            }
            b -= t;
        }
    }
    if (n & 1) {
        int t = min(a, m/2);
        if (t > 0) {
            for (int i = 0; i < t; i++) {
                c[0][i*2+(m&1)] = 3;
                c[0][i*2+(m&1)+1] = 4;
            }
            a -= t;
        }
    }
    for (int i = (n&1); i < n; i+=2) {
        if (i >= n) continue;
        for (int j = (m&1); j < m; j+=2) {
            if (j >= m) continue;
            if (a > 0) {
                int t = min(a, 2);
                c[i][j] = 3;
                c[i][j+1] = 4;
                if (t > 1) {
                    c[i+1][j] = 3;
                    c[i+1][j+1] = 4;
                }
                a -= t;
            } else if (b > 0) {
                int t = min(b, 2);
                c[i][j] = 1;
                c[i+1][j] = 2;
                if (t > 1) {
                    c[i][j+1] = 1;
                    c[i+1][j+1] = 2;
                }
                b -= t;
            } else break;
        }
    }
    if (a != 0 || b != 0) {
        return false;
    } 
    return true;
}

bool solve2 (int n, int m, int a, int b) {
    memset(c, 0, sizeof(c));
    if (n < 3 && m < 3) return false;
    a -= 2; b -= 2;
    c[1][0] = c[0][2] = 1;
    c[2][0] = c[1][2] = 2;
    c[0][0] = c[2][1] = 3;
    c[0][1] = c[2][2] = 4;
    if (m & 1) {
        int t = min(b, (n-3)/2);
        if (t > 0) {
            for (int i = 0; i < t; i++) {
                c[i*2+3][0] = 1;
                c[i*2+4][0] = 2;
            }
            b -= t;
        }
    }
    if (n & 1) {
        int t = min(a, (m-3)/2);
        if (t > 0) {
            for (int i = 0; i < t; i++) {
                c[0][i*2+3] = 3;
                c[0][i*2+4] = 4;
            }
            a -= t;
        }
    }
    for (int i = (n&1); i < n; i+=2) {
        if (i >= n) continue;
        for (int j = (m&1); j < m; j+=2) {
            if (j >= m) continue;
            if (i == 1 && j == 1) continue; 
            if (a > 0) {
                int t = min(a, 2);
                c[i][j] = 3;
                c[i][j+1] = 4;
                if (t > 1) {
                    c[i+1][j] = 3;
                    c[i+1][j+1] = 4;
                }
                a -= t;
            } else if (b > 0) {
                int t = min(b, 2);
                c[i][j] = 1;
                c[i+1][j] = 2;
                if (t > 1) {
                    c[i][j+1] = 1;
                    c[i+1][j+1] = 2;
                }
                b -= t;
            } else break;
        }
    }
    if (a != 0 || b != 0) {
        return false;
    }
    return true;
}

int main() {
    int n, m, a, b; cin >> n >> m >> a >> b;
    if (n * m < (a+b) * 2) {
        cout << "NO" << endl;
        return 0;
    }
    if (!solve(n, m, a, b)) {
        if (!(n&1 && m&1 && solve2(n, m, a, b))) {
            cout << "NO" << endl;
            return 0;
        }
    } 
    cout << "YES" << endl;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << cc[c[i][j]];
        }
        cout << endl;
    }
    return 0;
}

Measured memory_bytes: 5120