#include <bits/stdc++.h>

using namespace std;

#define sqr(x) ((x) * (x))
#define pb push_back
#define mp make_pair
#define X first
#define Y second
#define fin(name) FILE* aasckmasl=freopen(name, "r", stdin)
#define fout(name) freopen(name, "w", stdout)
#define I(x, a) for(auto x : a)
#define F(i, l, r) for(auto i = l; i < r; ++i)
#define E(i, l, r) for(auto i = l; i <= r; ++i)
#define DF(i, l, r) for(auto i = l; i >= r; --i)
#define clean(a) memset((a),0,sizeof (a))
#define sync ios_base::sync_with_stdio(0);cin.tie(0)
#define all(x) (x).begin(),(x).end()
#define ret return
#define cont continue
#define brk break
#define ins insert
#define sz(a) ((int)(a).size())

typedef long long ll;
typedef unsigned long long ull;
typedef long double dbl;
typedef pair <int, int> pii;

const int inf = (int)1e9;
const ll linf = (ll)1e18;
const int mod = (int)1e9 + 7;
const dbl eps = (dbl)1e-8;
const int maxn = (int)1e5 + 5;
const dbl pi = acos(-1);

void no() {
	cout << "NO\n";
	exit(0); 
}

int n, m, a, b;
char s[1003][1003];

void yes() {
	cout << "YES\n";
	F(i, 0, n) {
		F(j, 0, m) {
			if (!s[i][j])
				cout << '.';
			else
				cout << s[i][j];
		}
		cout << "\n";
	}
	exit(0);
}

int main() {
//    fin("t.in");
    sync;
    clean(s);
    cin >> n >> m >> a >> b;
    if (2 * a + 2 * b > n * m) {
    	no();
    }
    if (n % 2 == 1 && m % 2 == 1) {
    	for (int j = 1; j + 1 < m; j += 2) {
    		if (a > 0) {
    			s[n - 1][j] = '<';
    			s[n - 1][j + 1] = '>';
    			a -= 1;
    		}
    	}
    	for (int i = 0; i + 1 < n; i += 2) {
    		if (b > 0) {
    			s[i][m - 1] = '^';
    			s[i + 1][m - 1] = 'v';
    			b -= 1;
    		}
    	}
    	int fl = 0;
    	if (a % 2 == 1 && b % 2 == 1) {
   			int x = 2 * (n / 2 - 1), y = 0;
   			s[x + 1][y] = '^';
   			s[x + 2][y] = 'v';
   			s[x][y] = '<';
   			s[x][y + 1] = '>';
   			a -= 1;
   			b -= 1;
   			fl = 1;
    	}
    	F(i, 0, n / 2) {
    		F(j, 0, m / 2) {
    			if (fl && i == (n / 2 - 1) && j == 0)
    				cont;
    			int x = 2 * i, y = 2 * j;
    			if (a > 1) {
    				s[x][y] = '<';
    				s[x][y + 1] = '>';
    				s[x + 1][y] = '<';
    				s[x + 1][y + 1] = '>';
    				a -= 2;
    			} else if (b > 1) {
    				s[x][y] = '^';
    				s[x + 1][y] = 'v';
    				s[x][y + 1] = '^';
    				s[x + 1][y + 1] = 'v';
    				b -= 2;
    			} else if (a > 0) {
    				s[x][y] = '<';
    				s[x][y + 1] = '>';
    				a -= 1;
    			} else if (b > 0) {
    				s[x][y] = '^';
    				s[x + 1][y] = 'v';
    				b -= 1;
    			}
    		}
    	}
    	if (a > 0 || b > 0)
    		no();
    	yes();
    } else {
    	if (n % 2 == 1) {
	    	for (int j = 0; j + 1 < m; j += 2) {
	    		if (a > 0) {
	    			s[n - 1][j] = '<';
	    			s[n - 1][j + 1] = '>';
	    			a -= 1;
	    		}
	    	}
    	}
    	if (m % 2 == 1) {
	    	for (int i = 0; i + 1 < n; i += 2) {
	    		if (b > 0) {
	    			s[i][m - 1] = '^';
	    			s[i + 1][m - 1] = 'v';
	    			b -= 1;
	    		}
	    	}
    	}
    	F(i, 0, n / 2) {
    		F(j, 0, m / 2) {
    			int x = 2 * i, y = 2 * j;
    			if (a > 1) {
    				s[x][y] = '<';
    				s[x][y + 1] = '>';
    				s[x + 1][y] = '<';
    				s[x + 1][y + 1] = '>';
    				a -= 2;
    			} else if (b > 1) {
    				s[x][y] = '^';
    				s[x + 1][y] = 'v';
    				s[x][y + 1] = '^';
    				s[x + 1][y + 1] = 'v';
    				b -= 2;
    			} else if (a > 0) {
    				s[x][y] = '<';
    				s[x][y + 1] = '>';
    				a -= 1;
    			} else if (b > 0) {
    				s[x][y] = '^';
    				s[x + 1][y] = 'v';
    				b -= 1;
    			}
    		}
    	}
//    	cout << a << " " << b << " " << endl;
    	if (a > 0 || b > 0)
    		no();
    	yes();
    }
    return 0;
}

Measured memory_bytes: 2176