//Relive your past life.
//Face your demons.
//The past is never dead,it is not even past.
//The memories are not only the key to the past but...also to the future.
//coded in Rusty Lake
#include<cmath>
#include<math.h>
#include<ctype.h>
#include<algorithm>
#include<bitset>
#include<cassert>
#include<cctype>
#include<cerrno>
#include<cfloat>
#include<ciso646>
#include<climits>
#include<clocale>
#include<complex>
#include<csetjmp>
#include<csignal>
#include<cstdarg>
#include<cstddef>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cwchar>
#include<cwctype>
#include<deque>
#include<exception>
#include<fstream>
#include<functional>
#include<iomanip>
#include<ios>
#include<iosfwd>
#include<iostream>
#include<istream>
#include<iterator>
#include<limits>
#include<list>
#include<locale>
#include<map>
#include<memory>
#include<new>
#include<numeric>
#include<ostream>
#include<queue>
#include<set>
#include<sstream>
#include<stack>
#include<stdexcept>
#include<streambuf>
#include<string>
#include<typeinfo>
#include<utility>
#include<valarray>
#include<vector>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define ll   long long
#define pb   push_back
#define mp   make_pair
#define orz  1000000007
using namespace std;
int n,m,a,b;
char c[1005][1005];
void prt(){
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j)printf("%c",c[i][j]);
		printf("\n");
	}
}
int main(){
	scanf("%d%d%d%d",&n,&m,&a,&b);
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j)c[i][j]='.';
	}
	if(n==1){
		if(b||a*2>m)puts("NO");
		else{
			puts("YES");
			for(int i=1;i<=a;++i)c[1][i*2-1]='<',c[1][i*2]='>';
			prt();
		}
		return 0;
	}
	if(m==1){
		if(a||b*2>n)puts("NO");
		else{
			puts("YES");
			for(int i=1;i<=b;++i)c[i*2-1][1]='^',c[i*2][1]='v';
			prt();
		}
		return 0;
	}
	if((n&1)&&(m&1)){
		for(int i=1;i<=m-3&&a;i+=2){
			--a;
			c[n][i]='<',c[n][i+1]='>';
		}
		for(int i=1;i<=n-3&&b;i+=2){
			--b;
			c[i][m]='^',c[i+1][m]='v';
		}
		int x=(n-1)*(m-1)/2+2;
		if(a+b>x||(a+b==x&&((!a)||(!b)))){
			puts("NO");
			return 0;
		}
		for(int i=1;i<n;i+=2){
			for(int j=1;j<m;j+=2){
				if(i==n-2&&j==m-2)continue;
				if(a>b&&a){
					if(a==1)c[i][j]='<',c[i][j+1]='>',a=0;
					else c[i][j]=c[i+1][j]='<',c[i][j+1]=c[i+1][j+1]='>',a-=2;
				}
				else if(b){
					if(b==1)c[i][j]='^',c[i+1][j]='v',b=0;
					else c[i][j]=c[i][j+1]='^',c[i+1][j]=c[i+1][j+1]='v',b-=2;
				}
			}
		}
		if(a==2&&b==2){
			c[n-2][m-2]=c[n][m-1]='<';
			c[n-2][m-1]=c[n][m]='>';
			c[n-2][m]=c[n-1][m-2]='^';
			c[n-1][m]=c[n][m-2]='v';
		}
		else{
			if(a)--a,c[n][m-2]='<',c[n][m-1]='>';
			if(b)--b,c[n-2][m]='^',c[n-1][m]='v';
			int i=n-2,j=m-2;
			if(a){
				if(a==1)c[i][j]='<',c[i][j+1]='>',a=0;
				else c[i][j]=c[i+1][j]='<',c[i][j+1]=c[i+1][j+1]='>',a-=2;
			}
			else if(b){
				if(b==1)c[i][j]='^',c[i+1][j]='v',b=0;
				else c[i][j]=c[i][j+1]='^',c[i+1][j]=c[i+1][j+1]='v',b-=2;
			}
		}
		puts("YES");
		prt();
		return 0;
	}
	if(m&1){
		for(int i=1;i<n&&b;i+=2){
			--b;
			c[i][m]='^',c[i+1][m]='v';
		}
		for(int i=1;i<n;i+=2){
			for(int j=1;j<m;j+=2){
				if(a>b&&a){
					if(a==1)c[i][j]='<',c[i][j+1]='>',a=0;
					else c[i][j]=c[i+1][j]='<',c[i][j+1]=c[i+1][j+1]='>',a-=2;
				}
				else if(b){
					if(b==1)c[i][j]='^',c[i+1][j]='v',b=0;
					else c[i][j]=c[i][j+1]='^',c[i+1][j]=c[i+1][j+1]='v',b-=2;
				}
			}
		}
		if(a||b)puts("NO");
		else{
			puts("YES");
			prt();
		}
		return 0;
	}
	if(n&1){
		for(int i=1;i<m&&a;i+=2){
			--a;
			c[n][i]='<',c[n][i+1]='>';
		}
		for(int i=1;i<n;i+=2){
			for(int j=1;j<m;j+=2){
				if(a>b&&a){
					if(a==1)c[i][j]='<',c[i][j+1]='>',a=0;
					else c[i][j]=c[i+1][j]='<',c[i][j+1]=c[i+1][j+1]='>',a-=2;
				}
				else if(b){
					if(b==1)c[i][j]='^',c[i+1][j]='v',b=0;
					else c[i][j]=c[i][j+1]='^',c[i+1][j]=c[i+1][j+1]='v',b-=2;
				}
			}
		}
		if(a||b)puts("NO");
		else{
			puts("YES");
			prt();
		}
		return 0;
	}
	for(int i=1;i<n;i+=2){
		for(int j=1;j<m;j+=2){
			if(a>b&&a){
				if(a==1)c[i][j]='<',c[i][j+1]='>',a=0;
				else c[i][j]=c[i+1][j]='<',c[i][j+1]=c[i+1][j+1]='>',a-=2;
			}
			else if(b){
				if(b==1)c[i][j]='^',c[i+1][j]='v',b=0;
				else c[i][j]=c[i][j+1]='^',c[i+1][j]=c[i+1][j+1]='v',b-=2;
			}
		}
	}
	if(a||b)puts("NO");
	else{
		puts("YES");
		prt();
	}
    return 0;
}


Measured memory_bytes: 4640