#include<bits/stdc++.h>
using namespace std;
const int MAX = 1005;
char c[MAX][MAX];
char corner[3][3] = {
    {'<', '>', '^'},
    {'^', '.', 'v'},
    {'v', '<', '>'}
};
int n, m, a, b, aa, bb;
void clear_board(){
    aa = 0; bb = 0;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            c[i][j] = '.';
        }
    }
}
void print(){
    cout << "YES\n";
    vector<pair<int, int>> hori, vert;
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m - 1; j++){
            if(c[i][j] == '<' && c[i][j + 1] == '>'){
                hori.emplace_back(i, j);
            }
        }
    }
    for(int i = 0; i< n - 1; i++){
        for(int j = 0; j < m; j++){
            if(c[i][j] == '^' && c[i + 1][j] == 'v'){
                vert.emplace_back(i, j);
            }
        }
    }
    while((int) hori.size() > a) hori.pop_back();
    while((int) vert.size() > b) vert.pop_back();
    clear_board();
    for(auto h: hori){
        c[h.first][h.second] = '<';
        c[h.first][h.second + 1] = '>';
    }
    for(auto v: vert){
        c[v.first][v.second] = '^';
        c[v.first + 1][v.second] = 'v';
    }
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            cout << c[i][j];
        }
        cout << '\n';
    }
    exit(0);
}
void create_corner(){
    for(int i = 0; i < 3; i++){
        for(int j = 0; j < 3; j++){
            c[i][j] = corner[i][j];
        }
    }
}
void fail(){
    cout << "NO\n";
    exit(0);
}
int main(){
    cin >> n >> m >> a >> b;
    if(n % 2 == 0 && m % 2 == 0){
        clear_board();
        for(int i = 0; i < n; i++){
            for(int j = 0; j + 1 < m; j += 2){
                c[i][j] = '<';
                c[i][j + 1] = '>';
                aa++;
            }
        }
        for(int j = 0; j + 1 < m; j += 2){
            for(int i = 0; i + 1 < n; i += 2){
                if(aa >= a && bb >= b) print();
                c[i][j] = '^';
                c[i + 1][j] = 'v';
                c[i][j + 1] = '^';
                c[i + 1][j + 1] = 'v';
                aa -= 2; bb += 2;
                if(aa >= a && bb >= b) print();
            }
        }
        if(aa >= a && bb >= b) print();
    }
    if(m % 2 == 1){
        clear_board();
        for(int i = 0; i < n; i++){
            for(int j = 0; j + 1 < m; j += 2){
                c[i][j] = '<';
                c[i][j + 1] = '>';
                aa++;
            }
        }
        for(int i = 0; i + 1 < n; i += 2){
            c[i][m - 1] = '^';
            c[i + 1][m - 1] = 'v';
            bb++;
        }
        for(int j = 0; j + 1 < m; j += 2){
            for(int i = 0; i + 1 < n; i += 2){
                if(aa >= a && bb >= b) print();
                c[i][j]= '^';
                c[i + 1][j] = 'v';
                c[i][j + 1] = '^';
                c[i + 1][j + 1] = 'v';
                aa -= 2; bb += 2;
                if(aa >= a && bb >= b) print();
            }
        }
        if(aa >= a && bb >= b) print();
    }
    if(n % 2 == 1){
        clear_board();
        for(int j = 0; j < m ; j++){
            for(int i = 0; i + 1 < n; i += 2){
                c[i][j] = '^';
                c[i + 1][j] = 'v';
                bb++;
            }
        }
        for(int j = 0; j + 1 < m; j += 2){
            c[n - 1][j] = '<';
            c[n - 1][j + 1] = '>';
            aa++;
        }
        for(int i = 0; i + 1 < n; i += 2){
            for(int j = 0; j + 1 < m; j += 2){
                if(aa >= a && bb >= b) print();
                c[i][j] = '<';
                c[i][j + 1] = '>';
                c[i + 1][j] = '<';
                c[i + 1][j + 1] = '>';
                aa += 2; bb -= 2;
                if(aa >= a && bb >= b) print();
            }
        }
        if(aa >= a && bb >= b) print();
    }
    if(n % 2 == 1 && m % 2 == 1){
        clear_board();
        if(n < 3 && m < 3) fail();
        create_corner();
        aa = 2; bb = 2;
        for(int i = 0; i < n; i++){
            for(int j = 1; j + 1 < m; j += 2){
                if(i <= 2 && j <= 2) continue;
                c[i][j] = '<';
                c[i][j + 1] = '>';
                aa++;
            }
        }
        for(int i = 1; i < n; i += 2){
            if(i <= 2) continue;
            c[i][0] = '^';
            c[i + 1][0] = 'v';
            bb++;
        }
        for(int i = 0; i + 1 < n; i += 2){
            for(int j = 1; j + 1 < m; j += 2){
                if(aa >= a && bb >= b) print();
                if(i <= 2 && j <= 2) continue;
                c[i][j] = '^';
                c[i + 1][j] = 'v';
                c[i][j + 1] = '^';
                c[i + 1][j + 1] = 'v';
                aa -= 2; bb += 2;
                if(aa >= a && bb >= b) print();
            }
        }
        if(aa >= a && bb >= b) print();
        clear_board();
        create_corner();
        aa = 2; bb = 2;
        for(int j = 0; j < m; j++){
            for(int i = 1; i + 1 < n; i += 2){
                if(i <= 2 && j <= 2) continue;
                c[i][j] = '^';
                c[i + 1][j] = 'v';
                bb++;
            }
        }
        for(int j = 1; j < m; j += 2){
            if(j <= 2) continue;
            c[0][j] = '<';
            c[0][j + 1] = '>';
            aa++;
        }
        for(int j = 0; j + 1 < m; j += 2){
            for(int i = 1; i + 1 < n; i += 2){
                if(aa >= a && bb >= b) print();
                if(i <= 2 && j <= 2) continue;
                c[i][j] = '<';
                c[i][j + 1] = '>';
                c[i + 1][j] = '<';
                c[i + 1][j + 1] = '>';
                aa += 2; bb -= 2;
                if(aa >= a && bb >= b) print();
            }
        }
        if(aa >= a && bb >= b) print();
    }
    fail();

}


Measured memory_bytes: 9100