#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int INF = 1e9;
const ll LINF = 1e18;
void solve_C();
int main(void) {
    cin.tie(0); ios::sync_with_stdio(false);
    solve_C();
    return 0;
}

void solve_C(){
    ll N,M,A,B; cin >> N >> M >> A >> B;
    
    if(N == 3 && M == 3 && A == 2 && B == 2){
        cout << "YES" << endl;
        cout << "<>^\n" <<
                "^.v\n" <<
                "v<>\n" <<
        endl;
        return;
    }
    
    if(2*A + 2*B > N*M){
        cout << "NO" << endl;
        return;
    }
    
    ll nN = N,nM = M;
    vector<vector<char>> c(N+1,vector<char>(M+1,'.'));
    if(N%2 == 1 && M%2 == 1){
        N--; M--;
        for(ll w = 1; w <= M; w+=2){
            if(A == 0) break;
            c[nN][w] = '<'; c[nN][w+1] = '>';
            A--;
        }
        for(ll h = 1; h <= N; h+=2){
            if(B == 0) break;
            c[h][nM] = '^'; c[h+1][nM] = 'v';
            B--;
        }
    }else if(N%2 == 1){
        N--;
        for(ll w = 1; w <= M; w+=2){
            if(A == 0) break;
            c[nN][w] = '<'; c[nN][w+1] = '>';
            A--;
        }
    }else if(M%2 == 1){
        M--;
        for(ll h = 1; h <= N; h+=2){
            if(B == 0) break;
            c[h][nM] = '^'; c[h+1][nM] = 'v';
            B--;
        }
    }
    
    if(2*A + 2*B > N*M){
        cout << "NO" << endl;
        return;
    }
    
//    cout << A << " " << B << endl;
//    cout << N << " " << M << endl;
//    for(ll jj = 1; jj <= nN;jj++){
//        for(ll kk = 1; kk <= nM; kk++){
//            cout << c[jj][kk];
//        }
//        cout << endl;
//    }
    
    for(ll i = 1; i <= N; i+=2){
        for(ll j = 1; j <= M; j+=2){
            if(A == 0 && B == 0) continue;
            if(i == N - 1 && j == M - 1 && nN%2 == 1 && nM%2 == 1 && A == 1 && B == 1){
                
                for(ll ii = N - 1; ii <= N+1; ii++){
                    for(ll jj = M - 1; jj <= M+1; jj++){
                        c[ii][jj] = '.';
                    }
                }
                
                c[N-1][M-1] = '^'; c[N][M-1] = 'v';
                c[N-1][M] = '<'; c[N-1][M+1] = '>';
                
                
                c[N][M+1] = '^'; c[N+1][M+1] = 'v';
                c[N+1][M-1] = '<'; c[N+1][M] = '>';
                A--; B--;
                continue;
            }
            
            if(A >= 2){
                c[i][j] = '<'; c[i][j+1] = '>';
                A--;
                c[i+1][j] = '<'; c[i+1][j+1] = '>';
                A--;
            }else if(B >= 2){
                c[i][j] = '^'; c[i+1][j] = 'v';
                B--;
                c[i][j+1] = '^'; c[i+1][j+1] = 'v';
                B--;
            }else if(A == 1){
                c[i][j] = '<'; c[i][j+1] = '>';
                A--;
            }else if(B == 1){
                c[i][j] = '^'; c[i+1][j] = 'v';
                B--;
            }
        }
    }
    if(A != 0 || B != 0){
        cout << "NO" << endl;
        return;
    }else{
        cout << "YES" << endl;
        for(ll i = 1; i <= nN;i++){
            for(ll j = 1; j <= nM; j++){
                cout << c[i][j];
            }
            cout << endl;
        }
    }
    return;
}


Measured memory_bytes: 2304