#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define llu unsigned long long
#define ld double
#define llu unsigned long long
#define rep(i,x,y)  for(ll i=x;i<y;++i)
#define For(i,x,y)  for(ll i=x;i<=y;++i)
#define FOr(i,x,y)  for(ll i=x;i>=y;--i)
#define pi acos(-1)
#define mk make_pair<ll,ll>
#define pa pair<ll,ll>
#define lf else if
#define max(x,y)    ((x)<(y)?(y):(x))
#define min(x,y)    ((x)<(y)?(x):(y))
#define sqr(x)      ((x)*(x))
#define abs(x)      ((x)>0?(x):-(x))
#define Mul(x,y)    ((x)=1LL*(x)*(y)%mod)
#define Add(x,y)    ((x)=((x)+(y))%mod)
#define Max(x,y)    ((x)=((x)<(y)?(y):(x)))
#define Min(x,y)    ((x)=((x)>(y)?(y):(x)))
#define E(x)        return writeln(x),0
#define p(x)        printf("~%lld~\n",x)
#define pp(x,y)     printf("~~%lld %lld~~\n",x,y)
#define ppp(x,y,z)  printf("~~~%lld %lld %lld~~~\n",x,y,z)
#define pppp(a,b,c,d)	printf("~~~%lld %lld %lld %lld\n",a,b,c,d)
#define f_in(x)     freopen(x,"r",stdin)
#define f_out(x)    freopen(x,"w",stdout)
#define open(x)     f_in(x".in"),f_out(x".out")
#define fi first
#define se second
typedef complex<double> E;
namespace SHENZHEBEI{
#define NEG 1
#if NEG
    inline ll read(){    ll x=0,f=1; char ch=getchar();   for (;!isdigit(ch);ch=getchar()) if (ch=='-') f=-1;  for (;isdigit(ch);ch=getchar())  x=x*10-48+ch;   return x*f; }
    inline void write(ll x){    if (x<0) putchar('-'),x=-x;  if (x>=10)   write(x/10);    putchar(x%10+'0');  }
#else
    inline ll read(){    ll x=0; char ch=getchar();   for (;!isdigit(ch);ch=getchar());    for (;isdigit(ch);ch=getchar())  x=x*10-48+ch;   return x;   }
    inline void write(ll x){    if (x>=10)   write(x/10);    putchar(x%10+'0');  }
#endif
    inline char readchar(){ char ch=getchar();   for(;isspace(ch);ch=getchar());  return ch;  }
    inline ll readstr(char *s){ char ch=getchar();   int cur=0;  for(;isspace(ch);ch=getchar());      for(;!isspace(ch);ch=getchar())  s[cur++]=ch;    s[cur]='\0';    return cur; }
    inline void writeln(ll x){  write(x);   puts("");   }
    inline ld getreal(){    static ld lbc;  scanf("%lf",&lbc);  return lbc; }
}using namespace SHENZHEBEI;
ll n,m,A,B,AA,BB;
ll bel[1010][1010];
void work(){
	For(i,1,n)For(j,1,m)if (!bel[i][j]&&!bel[i][j+1]&&!bel[i+1][j]&&!bel[i+1][j+1]&&B>1)	bel[i][j]=bel[i+1][j]='<',bel[i][j+1]=bel[i+1][j+1]='>',B-=2;
	For(i,1,n)For(j,1,m)if (!bel[i][j]&&!bel[i][j+1]&&!bel[i+1][j]&&!bel[i+1][j+1]&&A>1)	bel[i][j]=bel[i][j+1]='^',bel[i+1][j]=bel[i+1][j+1]='v',A-=2;
	For(i,1,n)For(j,1,m)if (!bel[i][j]&&!bel[i][j+1]&&B)	bel[i][j]='<',bel[i][j+1]='>',--B;
	For(i,1,n)For(j,1,m)if (!bel[i][j]&&!bel[i+1][j]&&A)	bel[i][j]='^',bel[i+1][j]='v',--A;
	if (!A&&!B){
		puts("YES");
		For(i,1,n){
			For(j,1,m)putchar(bel[i][j]?bel[i][j]:'.');
			puts("");
		}exit(0);
	}
}
void init(){
	For(i,1,n+1)For(j,1,m+1)bel[i][j]=233;
	For(i,1,n)For(j,1,m)bel[i][j]=0;
}
int main(){
	n=read(),m=read(),B=BB=read(),A=AA=read();
	init();
	if (!(n&1)&&!(m&1))work();
	else if ((n&1)&&!(m&1)){	For(i,1,m)if (!bel[n][i]&&!bel[n][i+1]&&B)	--B,bel[n][i]='<',bel[n][i+1]='>';work();}
	else if (!(n&1)&&(m&1)){	For(i,1,n)if (!bel[i][m]&&!bel[i+1][m]&&A)	--A,bel[i][m]='^',bel[i+1][m]='v';work();}
	else{
		For(i,1,m)if (!bel[n][i]&&!bel[n][i+1]&&B)	--B,bel[n][i]='<',bel[n][i+1]='>';
		FOr(i,n,1)if (!bel[i][m]&&!bel[i+1][m]&&A)	--A,bel[i][m]='^',bel[i+1][m]='v';
		work();
		init();A=AA;B=BB;
		if (n>=3&&m>=3&&A>=2&&B>=2){
			bel[n-2][m-2]='<';	bel[n-2][m-1]='>';	bel[n-2][m]='^';
			bel[n-1][m]='v';
			bel[n][m]='>';	bel[n][m-1]='<';	bel[n][m-2]='v';
			bel[n-1][m-2]='^';
			A-=2,B-=2;
			For(i,1,m)if (!bel[n][i]&&!bel[n][i+1]&&B)	--B,bel[n][i]='<',bel[n][i+1]='>';
			FOr(i,n,1)if (!bel[i][m]&&!bel[i+1][m]&&A)	--A,bel[i][m]='^',bel[i+1][m]='v';
			work();
		}
	}
	puts("NO");
}

Measured memory_bytes: 9088