#include <bits/stdc++.h>
using namespace std;
char ans[1005][1005];
int main() {
	int n, m, a, b, a0, b0;
	scanf("%d%d%d%d", &n, &m, &b, &a); a0 = a, b0 = b;
	for (int i = 0; i < n; ++ i) {
		for (int j = 0; j < m; ++ j) ans[i][j] = '.';
	}
	if ((n & 1) && (m & 1)) {
		if (n == 1) {
			if (b <= m / 2) {
				for (int i = 0; i / 2 < b; i += 2) {
					ans[0][i] = '<';
					ans[0][i + 1] = '>';
				}
				b = 0;
			}
		}
		else if (m == 1) {
			if (a <= n / 2) {
				for (int i = 0; i / 2 < a; i += 2) {
					ans[i][0] = '^';
					ans[i + 1][0] = 'v';
				}
				a = 0;
			}
		}
		else {
			if (a <= n / 2 && b <= m / 2 * n) {
				for (int i = 0; i < n; ++ i) {
					for (int j = 0; j + 1 < m; j += 2) {
						if (b) {
							b --;
							ans[i][j] = '<';
							ans[i][j + 1] = '>';
						}
					}
				}
				for (int i = 0; i + 1 < n; i += 2) {
					if (a) {
						a --;
						ans[i][m - 1] = '^';
						ans[i + 1][m - 1] = 'v';
					}
				}
			}
			else if (b <= m / 2 && a <= n / 2 * m) {
				for (int i = 0; i < m; ++ i) {
					for (int j = 0; j + 1 < n; j += 2) {
						if (a) {
							a --;
							ans[j][i] = '^';
							ans[j + 1][i] = 'v';
						}
					}
				}
				for (int i = 0; i + 1 < m; i += 2) {
					if (b) {
						b --;
						ans[n - 1][i] = '<';
						ans[n - 1][i + 1] = '>';
					}
				}
			}
			else {
				ans[0][0] = '^'; ans[0][1] = '<'; ans[0][2] = '>';
				ans[1][0] = 'v'; ans[1][1] = '.'; ans[1][2] = '^';
				ans[2][0] = '<'; ans[2][1] = '>'; ans[2][2] = 'v';
				a -= 2, b -= 2;
				for (int i = 3; i + 1 < m; i += 2) {
					if (b) {
						b --;
						ans[0][i] = '<';
						ans[0][i + 1] = '>';
					}
				}
				for (int i = 3; i + 1 < n; i += 2) {
					if (a) {
						a --;
						ans[i][0] = '^';
						ans[i + 1][0] = 'v';
					}
				}
				for (int i = 1; i + 1 < n; i += 2) {
					for (int j = 1; j + 1 < m; j += 2) {
						if (i == 1 && j == 1) continue;
						if  (a) {
							if (a) {
								a --;
								ans[i][j] = '^';
								ans[i + 1][j] = 'v';
							}
							if (a) {
								a --;
								ans[i][j + 1] = '^';
								ans[i + 1][j + 1] = 'v';
							}
						}
						else if (b) {
							if (b) {
								b --;
								ans[i][j] = '<';
								ans[i][j + 1] = '>';
							}
							if (b) {
								b --;
								ans[i + 1][j] = '<';
								ans[i + 1][j + 1] = '>';
							}
						}
					}
				}
			}
		}
	}
	if (a || b) {
		for (int i = 0; i < n; ++ i) {
			for (int j = 0; j < m; ++ j) ans[i][j] = '.';
		}
		a = a0, b = b0;
		if (n & 1) {
			for (int i = m % 2; i + 1 < m; i += 2) {
				if (b) {
					b --;
					ans[0][i] = '<';
					ans[0][i + 1] = '>';
				}
			}
		}
		if (m & 1) {
			for (int i = n % 2; i + 1 < n; i += 2) {
				if (a) {
					a --;
					ans[i][0] = '^';
					ans[i + 1][0] = 'v';
				}
			}
		}
		for (int i = n % 2; i + 1 < n; i += 2) {
			for (int j = m % 2; j + 1 < m; j += 2) {
				if  (a) {
					if (a) {
						a --;
						ans[i][j] = '^';
						ans[i + 1][j] = 'v';
					}
					if (a) {
						a --;
						ans[i][j + 1] = '^';
						ans[i + 1][j + 1] = 'v';
					}
				}
				else if (b) {
					if (b) {
						b --;
						ans[i][j] = '<';
						ans[i][j + 1] = '>';
					}
					if (b) {
						b --;
						ans[i + 1][j] = '<';
						ans[i + 1][j + 1] = '>';
					}
				}
			}
		}
		if (a || b) return 0 * puts("NO");
	}
	puts("YES");
	for (int i = 0; i < n; ++ i) puts(ans[i]);
}


Measured memory_bytes: 2176