#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define mp make_pair
#define si(x) int(x.size())
const int mod=998244353,MAX=305,INF=1<<30;

void umeru(vector<string> &S,int A,int B){
    int H=si(S);
    int W=si(S[0]);
    
    for(int h=0;h+1<H;h+=2){
        for(int w=0;w+1<W;w+=2){
            if(A){
                S[h][w]='<';
                S[h][w+1]='>';
                A--;
                
                if(A){
                    S[h+1][w]='<';
                    S[h+1][w+1]='>';
                    A--;
                }
            }else if(B){
                S[h][w]='^';
                S[h+1][w]='v';
                B--;
                
                if(B){
                    S[h][w+1]='^';
                    S[h+1][w+1]='v';
                    B--;
                }
            }
        }
    }
}

int main(){
    
    std::ifstream in("text.txt");
    std::cin.rdbuf(in.rdbuf());
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    int H,W,A,B;cin>>H>>W>>A>>B;
    vector<string> S(H,string(W,'.'));
    if(H%2==0&&W%2==0){
        int need=(A+1)/2+(B+1)/2;
        need*=4;
        if(H*W<need) cout<<"NO"<<endl;
        else{
            cout<<"YES"<<endl;
            umeru(S,A,B);
            for(int i=0;i<H;i++) cout<<S[i]<<"\n";
        }
    }else if(H%2==1&&W%2==0){
        for(int w=0;w+1<W;w+=2){
            if(A){
                S[H-1][w]='<';
                S[H-1][w+1]='>';
                A--;
            }
        }
        int need=(A+1)/2+(B+1)/2;
        need*=4;
        if((H-1)*W<need) cout<<"NO"<<endl;
        else{
            cout<<"YES"<<endl;
            umeru(S,A,B);
            for(int i=0;i<H;i++) cout<<S[i]<<"\n";
        }
    }else if(H%2==0&&W%2==1){
        for(int h=0;h+1<H;h+=2){
            if(B){
                S[h][W-1]='^';
                S[h+1][W-1]='v';
                B--;
            }
        }
        int need=(A+1)/2+(B+1)/2;
        need*=4;
        if(H*(W-1)<need) cout<<"NO"<<endl;
        else{
            cout<<"YES"<<endl;
            umeru(S,A,B);
            for(int i=0;i<H;i++) cout<<S[i]<<"\n";
        }
    }else if(H==1){
        if(B||A*2>W) cout<<"NO"<<endl;
        else{
            for(int w=0;w+1<W;w+=2){
                if(A){
                    S[0][w]='<';
                    S[0][w+1]='>';
                    A--;
                }
            }
            cout<<"YES"<<endl;
            for(int i=0;i<H;i++) cout<<S[i]<<"\n";
        }
    }else if(W==1){
        if(A||B*2>H) cout<<"NO"<<endl;
        else{
            for(int h=0;h+1<H;h+=2){
                if(B){
                    S[h][0]='^';
                    S[h+1][0]='v';
                    B--;
                }
            }
            cout<<"YES"<<endl;
            for(int i=0;i<H;i++) cout<<S[i]<<"\n";
        }
    }else{
        for(int h=0;h+1<H-3;h+=2){
            if(B){
                S[h][W-1]='^';
                S[h+1][W-1]='v';
                B--;
            }
        }
        for(int w=0;w+1<W-3;w+=2){
            if(A){
                S[H-1][w]='<';
                S[H-1][w+1]='>';
                A--;
            }
        }
        
        vector<int> X={3,2,1},Y={1,2,3};
        
        for(int q=0;q<3;q++){
            int Arem=max(0,A-X[q]),Brem=max(0,B-Y[q]);
            
            int need=(Arem+1)/2+(Brem+1)/2;
            need*=4;
            if((H-1)*(W-1)-4>=need){
                if(q==1){
                    if(A){
                        S[H-3][W-3]='<';
                        S[H-3][W-2]='>';
                        A--;
                    }
                    if(A){
                        S[H-1][W-2]='<';
                        S[H-1][W-1]='>';
                        A--;
                    }
                    if(B){
                        S[H-2][W-3]='^';
                        S[H-1][W-3]='v';
                        B--;
                    }
                    if(B){
                        S[H-3][W-1]='^';
                        S[H-2][W-1]='v';
                        B--;
                    }
                }else{
                    if(A){
                        S[H-1][W-3]='<';
                        S[H-1][W-2]='>';
                        A--;
                    }
                    if(B){
                        S[H-3][W-1]='^';
                        S[H-2][W-1]='v';
                        B--;
                    }
                }
                cout<<"YES"<<endl;
                umeru(S,A,B);
                for(int i=0;i<H;i++) cout<<S[i]<<"\n";
                return 0;
            }
        }
        
        cout<<"NO"<<endl;
    }
}



Measured memory_bytes: 4364