#include <bits/stdc++.h>
using namespace std;
int hang, lie;
int n, m, a, b;
char s[1020][1020];

void caonima(int a, int b, int niubi) {
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			s[i][j] = '.';
		}
	}
	if (m % 2 == 1) {
		for (int i = 0; i + 1 < n; i += 2) {
			if (b >= 1) {
				s[i][m - 1] = '^';
				s[i + 1][m - 1] = 'v';
				b -= 1;
			} else {
				s[i][m - 1] = '.';
				s[i + 1][m - 1] = '.';
			}
		}
	}
	if (n % 2 == 1) {
		for (int j = 0; j + 1 < m; j += 2) {
			if (a >= 1) {
				s[n - 1][j] = '<';
				s[n - 1][j + 1] = '>';
				a -= 1;
			} else {
				s[n - 1][j] = '.';
				s[n - 1][j + 1] = '.';
			}
		}
	}
	if (niubi && n >= 3 && m >= 3 && n % 2 == 1 && m % 2 == 1 && a >= 1 && b >= 1) {
		s[n - 3][m - 3] = '<';
		s[n - 3][m - 2] = '>';
		s[n - 3][m - 1] = '^';
		s[n - 2][m - 1] = 'v';
		s[n - 2][m - 3] = '^';
		s[n - 1][m - 3] = 'v';
		s[n - 1][m - 2] = '<';
		s[n - 1][m - 1] = '>';
		a -= 1;
		b -= 1;
	}
	for (int i = 0; i + 1 < n; i += 2) {
		for (int j = 0; j + 1 < m; j += 2) {
			if (s[i][j] != '.') {
				continue;
			}
			if (a >= 2) {
				s[i][j] = '<';
				s[i][j+1] = '>';
				s[i+1][j] = '<';
				s[i+1][j+1] = '>';
				a -= 2;
			} else if (a == 1) {
				s[i][j] = '<';
				s[i][j+1] = '>';
				s[i+1][j] = '.';
				s[i+1][j+1] = '.';
				a -= 1;
			} else if (b >= 2) {
				s[i][j] = '^';
				s[i][j+1] = '^';
				s[i+1][j] = 'v';
				s[i+1][j+1] = 'v';
				b -= 2;
			} else if (b == 1) {
				s[i][j] = '^';
				s[i][j+1] = '.';
				s[i+1][j] = 'v';
				s[i+1][j+1] = '.';
				b -= 1;
			} else {
				s[i][j] = '.';
				s[i][j+1] = '.';
				s[i+1][j] = '.';
				s[i+1][j+1] = '.';
			}
		}
	}
	if (a == 0 && b == 0) {
		printf("YES\n");
		for (int i = 0; i < n; i++) {
			printf("%s\n", s[i]);
		}
		exit(0);
	}
}
int main() {
	cin >> n >> m >> a >> b;
	caonima(a, b, 0);
	caonima(a, b, 1);
	printf("NO\n");
	exit(0);
}