#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstdlib>
#define cmax(a,b) (a<(b)?a=(b),1:0)
#define cmin(a,b) (a>(b)?a=(b),1:0)
#define dmin(a,b) ((a)<(b)?(a):(b))
#define dmax(a,b) ((a)>(b)?(a):(b))
#define CL fclose(stdin),fclose(stdout)
namespace io
{
	int F()
	{
		int n=0,F=1;
		char ch;
		while((ch=getchar())!='-'&&(ch<'0'||ch>'9'));
		ch=='-'?F=0:n=ch-'0';
		while((ch=getchar())>='0'&&ch<='9')n=(n<<1)+(n<<3)+ch-'0';
		return F?n:-n;
	}
	long long G()
	{
		long long n=0,F=1;
		char ch;
		while((ch=getchar())!='-'&&(ch<'0'||ch>'9'));
		ch=='-'?F=0:n=ch-'0';
		while((ch=getchar())>='0'&&ch<='9')n=(n<<1)+(n<<3)+ch-'0';
		return F?n:-n;
	}
}
char map[1111][1111];
int main()
{
	int n=io::F(),m=io::F(),a=io::F(),b=io::F();
	for(register int i=1;i<=n;++i)for(register int j=1;j<=m;++j)map[i][j]='.';
	if((a+b<<1)>n*m){puts("NO");return 0;}
	if(n%2==0)
	{
		for(register int i=1;i<=m;i+=2)
			for(register int j=1;j<=n;++j)
				if(map[j][i]=='.'&&map[j][i+1]=='.'&&a)
					map[j][i]='<',map[j][i+1]='>',--a;
		for(register int i=1;i<=m;++i)
			for(register int j=1;j<=n;++j)
				if(map[j][i]=='.'&&map[j+1][i]=='.'&&b)
					map[j][i]='^',map[j+1][i]='v',--b;
	}
	else if(m%2==0)
	{
		for(register int i=1;i<=n;i+=2)
			for(register int j=1;j<=m;++j)
				if(map[i][j]=='.'&&map[i+1][j]=='.'&&b)
					map[i][j]='^',map[i+1][j]='v',--b;
		for(register int i=1;i<=n;++i)
			for(register int j=1;j<=m;++j)
				if(map[i][j]=='.'&&map[i][j+1]=='.'&&a)
					map[i][j]='<',map[i][j+1]='>',--a;
	}
	else
	{
		int A=a,B=b;
		for(register int i=1;i<=m;++i)
			for(register int j=1;j<=n;++j)
				if(map[j][i]=='.'&&map[j][i+1]=='.'&&a)
					map[j][i]='<',map[j][i+1]='>',--a;
		for(register int i=1;i<=m;++i)
			for(register int j=1;j<=n;++j)
				if(map[j][i]=='.'&&map[j+1][i]=='.'&&b)
					map[j][i]='^',map[j+1][i]='v',--b;
		if(a==0&&b==0)goto skip;
		for(register int i=1;i<=n;++i)for(register int j=1;j<=m;++j)map[i][j]='.';
		a=A,b=B;
		for(register int i=1;i<=n;i+=2)
			if(map[i][1]=='.'&&map[i+1][1]=='.'&&b)
				map[i][1]='^',map[i+1][1]='v',--b;
		for(register int i=1;i<=m;i+=2)
			if(map[n][i]=='.'&&map[n][i+1]=='.'&&a)
				map[n][i]='<',map[n][i+1]='>',--a;
		for(register int i=1;i<n;++i)
			for(register int j=2;j<=m;++j)
				if(map[i][j]=='.'&&map[i+1][j]=='.'&&b)
					map[i][j]='^',map[i+1][j]='v',--b;
		for(register int i=1;i<n;++i)
			for(register int j=2;j<=m;++j)
				if(map[i][j]=='.'&&map[i][j+1]=='.'&&a)
					map[i][j]='<',map[i][j+1]='>',--a;
		if(a==0&&b==0)goto skip;
		for(register int i=1;i<=n;++i)for(register int j=1;j<=m;++j)map[i][j]='.';
		a=A,b=B;
		if(a>=2&&b>=2&&n>=3&&m>=3)
		{
			map[1][1]=map[3][2]='<';
			map[1][2]=map[3][3]='>';
			map[2][1]=map[1][3]='^';
			map[3][1]=map[2][3]='v';
			a-=2,b-=2;
			for(register int i=4;i<=m;++i)
				if(map[1][i]=='.'&&map[1][i+1]=='.'&&a)map[1][i]='<',map[1][i+1]='>',--a;
			for(register int i=4;i<=n;++i)
				if(map[i][1]=='.'&&map[i+1][1]=='.'&&b)map[i][1]='^',map[i+1][1]='v',--b;
			for(register int i=1;i<=m;++i)
				for(register int j=1;j<=n;++j)
					if(map[j][i]=='.'&&map[j][i+1]=='.'&&a)
						map[j][i]='<',map[j][i+1]='>',--a;
			for(register int i=1;i<=m;++i)
				for(register int j=1;j<=n;++j)
					if(map[j][i]=='.'&&map[j+1][i]=='.'&&b)
						map[j][i]='^',map[j+1][i]='v',--b;
			if(a==0&&b==0)goto skip;
		}
		puts("NO");
		return 0;
	}
	if(a||b){puts("NO");return 0;}
	skip:;
	puts("YES");
	for(register int i=1;i<=n;++i)puts(map[i]+1);
	return 0;
}



Measured memory_bytes: 2176