#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m,a,b;char c[N][N];
void P1(int x,int y){c[x][y]='<';c[x][y+1]='>';a--;}
void P2(int x,int y){c[x][y]='^';c[x+1][y]='v';b--;}
int main(){
    scanf("%d%d%d%d",&n,&m,&a,&b);
    if(n&1)for(int i=1;i+1<=m&&a;i+=2)P1(n,i);
    for(int j=m&1?2:1;j+1<=m;j+=2)for(int i=1;i+1<=n;i+=2)
        if(a>1&&!c[i][j]&&!c[i][j+1]&&!c[i+1][j]&&!c[i+1][j+1])P1(i,j),P1(i+1,j);
    for(int i=1;i<=n;i++)if(a&&!c[i][m-1]&&!c[i][m])P1(i,m-1);
    if(a)puts("NO"),exit(0);
    for(int i=1;i+1<=n;i++)for(int j=1;j<=m;j++)
        if(b&&!c[i][j]&&!c[i+1][j])P2(i,j);
    if(b)puts("NO"),exit(0);
    puts("YES");
    for(int i=1;i<=n;i++,puts(""))for(int j=1;j<=m;j++)putchar(c[i][j]?c[i][j]:'.');
    return 0;
}
// 5 5 5 7