#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <string>
using namespace std;
typedef long long ll;
const int maxn = 1000+5;
char map[maxn][maxn];
int N,M,A,B;
int main()
{
       memset(map,'.',sizeof(map));
	scanf("%d%d%d%d",&N,&M,&A,&B);
	int tempA=A,tempB=B;


	//第一遍
	if( !(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		  if (N%2==1)
		{
			if (M>=2)
			{
				for(int i=1;i+1<=M;i+=2)
				{
					if (A==0) break;
					map[1][i]='<';
					map[1][i+1]='>';
					A--;
				}
			}
		}
		if (M%2==1)
		{
			if (N>=2)
			{
				for (int i=1;i<N;i+=2)
				{
					if (B==0) break;
					map[i][M]='^';
					map[i+1][M]='v';
					B--;
				}
			}
		}
		for(int j=1;j<M;j++)
		{
			if (A==0)break;
			for(int i=1;i<=N;i++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}
		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}
	}

	 //第二遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		  if (N%2==1)
		{
			if (M>=2)
			{
				for(int i=1;i+1<=M;i+=2)
				{
					if (A==0) break;
					map[1][i]='<';
					map[1][i+1]='>';
					A--;
				}
			}
		}

		if (M%2==1)
		{
			if (N>=2)
			{
				for (int i=1;i<N;i+=2)
				{
					if (B==0) break;
					map[i][M]='^';
					map[i+1][M]='v';
					B--;
				}
			}
		}
		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}

		for(int j=1;j<M;j++)
		{
			if (A==0)break;
			for(int i=1;i<=N;i++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}
	}

	 //第三遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		if (N>=3&&M>=3)
		{
			if (A!=0)
			{
				map[N-2][1]='<';
				map[N-2][2]='>';
				A--;
			}
                  if (B!=0)
			{
				map[N-2][3]='^';
				map[N-1][3]='v';
				B--;
			}
			if (B!=0)
			{
				map[N-1][1]='^';
				map[N][1]='v';
				B--;
			}
			if (A!=0)
			{
				map[N][2]='<';
				map[N][3]='>';
				A--;
			}
		}

		for(int i=1;i<=N;i++)
		{
			if (A==0)break;
			for(int j=1;j<M;j++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}

		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}
	}

	//第四遍
	if (!(A==0&&B==0))
	{
		memset(map,'.',sizeof(map));
		A=tempA,B=tempB;
		if (N>=3&&M>=3)
		{
			if (A!=0)
			{
				map[N-2][1]='<';
				map[N-2][2]='>';
				A--;
			}
                  if (B!=0)
			{
				map[N-2][3]='^';
				map[N-1][3]='v';
				B--;
			}
			if (B!=0)
			{
				map[N-1][1]='^';
				map[N][1]='v';
				B--;
			}
			if (A!=0)
			{
				map[N][2]='<';
				map[N][3]='>';
				A--;
			}
		}

		if(M%2==1)
		{
			for(int j=1;j<N;j++)
			{
				if (B==0) break;
				if (map[j][1]=='.'&&map[j+1][1]=='.')
				{
					map[j][1]='^';
					map[j+1][1]='v';
					B--;
				}
			}

		}


		for(int i=1;i<N;i++)
		{
			if (B==0)break;
			for(int j=1;j<=M;j++)
			{
				if (B==0) break;
				if (map[i][j]=='.' && map[i+1][j]=='.')
				{
					map[i][j]='^' ;
					map[i+1][j]='v';
					B--;
				}
			}
		}

		for(int i=1;i<=N;i++)
		{
			if (A==0)break;
			for(int j=1;j<M;j++)
			{
				if (A==0)break;
				if (map[i][j]=='.' && map[i][j+1]=='.')
				{
					map[i][j]='<';
					map[i][j+1]='>';
					A--;
				}
			}
		}
	}









	//---------------答案输出-------------------
	if (A==0&&B==0)
	{
		printf("YES\n");
		for(int i=1;i<=N;i++)  {   for(int j=1;j<=M;j++)printf("%c",map[i][j]);  printf("\n"); }
	}else printf("NO\n");
	return 0;
}


Measured memory_bytes: 2176