#include <bits/stdc++.h>

using namespace std;

string sign=".<>^v";
const int N=1e3+10;

int n,m;
int ans[N][N];

bool DP(int n1,int n2,int dx,int dy){
        if (!n1&&!n2) return 1;

        if (dx>=min(4,n)) return 0;
        if (dy>=min(4,m)) return DP(n1,n2,dx+1,0);
        int px=1+dx,py=m-dy;
        if (n1&&py<m&&!ans[px][py]&&!ans[px][py+1]){
                ans[px][py]=1;
                ans[px][py+1]=2;
                if (DP(n1-1,n2,dx,dy+1)) return 1;
                ans[px][py]=ans[px][py+1]=0;
        }
        if (n2&&px>=2&&!ans[px-1][py]&&!ans[px][py]){
                ans[px-1][py]=3;
                ans[px][py]=4;
                if (DP(n1,n2-1,dx,dy+1)) return 1;
                ans[px-1][py]=ans[px][py]=0;
        }
        return DP(n1,n2,dx,dy+1);
}
int main(){
        int u1,u2;
        cin>>n>>m>>u1>>u2;
        if (2*(u1+u2)>n*m){
                cout<<"NO";
                return 0;
        }
        int flip=0;
        if (n%2==0){
                flip=1;
                swap(n,m);
                swap(u1,u2);
                for(int i=1;i<=2;i++) swap(sign[i],sign[i+2]);
        }
        if (n&1){
                for(int i=1;i<=m-1&&u1;i+=2){
                        ans[n][i]=1;
                        ans[n][i+1]=2;
                        u1--;
                }
        }
        if (m&1){
                for(int i=n;i>=2&&u2;i-=2){
                        ans[i][m]=4;
                        ans[i-1][m]=3;
                        u2--;
                }
        }
        for(int xa=n-(n%2);xa>=2;xa-=2)
                for(int ya=2;ya<=m&&(u1>=2||u2>=2);ya+=2){
                        if (u1>=2){
                                ans[xa-1][ya-1]=ans[xa][ya-1]=1;
                                ans[xa-1][ya]=ans[xa][ya]=2;
                                u1-=2;
                        }else{
                                u2-=2;
                                ans[xa-1][ya-1]=ans[xa-1][ya]=3;
                                ans[xa][ya-1]=ans[xa][ya]=4;
                        }
                }
        if (u1>2||u2>2||!DP(u1,u2,0,0)){
                cout<<"NO";
                return 0;
        }
        if (flip){
                for(int i=1;i<N;i++)
                        for(int j=i;j<N;j++) swap(ans[i][j],ans[j][i]);
                swap(n,m);
        }
        
        cout<<"YES\n";
        for(int i=1;i<=n;i++){
                for(int j=1;j<=m;j++)
                        cout<<sign[ans[i][j]];
                cout<<'\n';
        }
}
