#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>

#define F first
#define S second
#define ll long long
#define ull  unsigned long long
#define pb push_back
#define double long double

using namespace std;
using namespace __gnu_pbds;
typedef  tree< int , null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
const int N = 2000;
int c[N][N];
main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    int n, m, a, b;
    cin >> n >> m >> a >> b;
    int g = 0;
    int v = 0;
    for (int i = 1; i <= n; i++){
        for (int j = 1; j < m; j += 2){
            c[i][j] = 1;
            c[i][j + 1] = 3;
            g++;
        }
    }
    if (m % 2){
        for (int i = 1; i < n; i += 2){
            c[i][m] = 2;
            c[i + 1][m] = 4;
            v++;
        }
    }
    int sw = (m / 2) * (n / 2);
    for (int i = 0; i <= sw; i++){
        int x = g - 2 * i;
        int y = v + 2 * i;
        if (x >= a && y >= b){
            cout << "YES" << endl;
            for (int j = 1; j < n && i; j += 2){
                for (int l = 1; l < m && i; l += 2){
                    c[j][l] = 2;
                    c[j][l + 1] = 2;
                    c[j + 1][l] = 4;
                    c[j + 1][l + 1] = 4;
                    i--;
                    g -= 2;
                    v += 2;
                }
            }
            v -= b;
            g -= a;
            for (int j = 1; j <= n && g; j++){
                for (int l = 1; l <= m && g; l++){
                    if (c[j][l] == 1 && c[j][l + 1] == 3){
                        c[j][l] = c[j][l + 1] = 0;
                        g--;
                    }
                }
            }
            for (int j = 1; j < n && v; j++){
                for (int l = 1; l <= m && v; l++){
                    if (c[j][l] == 2 && c[j + 1][l] == 4){
                        c[j][l] = c[j + 1][l] = 0;
                        v--;
                    }
                }
            }
            for (int i = 1; i <= n; i++, cout << endl){
                for (int j = 1; j <= m; j++){
                    if (c[i][j] == 1) cout << "<";
                    if (c[i][j] == 2) cout << "^";
                    if (c[i][j] == 3) cout << ">";
                    if (c[i][j] == 4) cout << "v";
                    if (c[i][j] == 0) cout << ".";
                }
            }
            return 0;
        }
    }
    if (n % 2 && m % 2){
        for (int i = 0; i < sw; i++){
            int x = g - 2 * i - 1;
            int y = v + 2 * i + 1;
            if (x >= a && y >= b){
                for (int j = 2; j < m; j += 2){
                    c[n][j] = 1;
                    c[n][j + 1] = 3;
                }
                c[n - 1][1] = 2;
                c[n][1] = 4;
                c[n - 1][2] = 0;
                g--;
                v++;
                cout << "YES" << endl;
                for (int j = 1; j < n && i; j += 2){
                    for (int l = 1; l < m && i; l += 2){
                        if (j == n - 2 && l == 1) continue;
                        c[j][l] = 2;
                        c[j][l + 1] = 2;
                        c[j + 1][l] = 4;
                        c[j + 1][l + 1] = 4;
                        i--;
                        g -= 2;
                        v += 2;
                    }
                }
                v -= b;
                g -= a;
                for (int j = 1; j <= n && g; j++){
                    for (int l = 1; l <= m && g; l++){
                        if (c[j][l] == 1 && c[j][l + 1] == 3){
                            c[j][l] = c[j][l + 1] = 0;
                            g--;
                        }
                    }
                }
                for (int j = 1; j < n && v; j++){
                    for (int l = 1; l <= m && v; l++){
                        if (c[j][l] == 2 && c[j + 1][l] == 4){
                            c[j][l] = c[j + 1][l] = 0;
                            v--;
                        }
                    }
                }
                for (int i = 1; i <= n; i++, cout << endl){
                    for (int j = 1; j <= m; j++){
                        if (c[i][j] == 1) cout << "<";
                        if (c[i][j] == 2) cout << "^";
                        if (c[i][j] == 3) cout << ">";
                        if (c[i][j] == 4) cout << "v";
                        if (c[i][j] == 0) cout << ".";
                    }
                }
                return 0;
            }
        }
    }
    cout << "NO";
    return 0;
}


Measured memory_bytes: 9472