#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, n) for(int i = 0; i < (n); i++)
#define rep1(i, n) for(int i = 1; i <= (n); i++)
#define co(x) cout << (x) << "\n"
#define cosp(x) cout << (x) << " "
#define ce(x) cerr << (x) << "\n"
#define cesp(x) cerr << (x) << " "
#define pb push_back
#define mp make_pair
#define Would
#define you
#define please



int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);


	int N, M, A, B;
	cin >> N >> M >> A >> B;

	if (N == 1 && M == 1) {
		if (A == 0 && B == 0) {
			co("YES");
			co('.');
		}
		else co("YES");
	}
	else if (N == 1 && B > 0) co("NO");
	else if (M == 1 && A > 0) co("NO");
	else if (N % 2 && M % 2) {
		int shita = min(M / 2, A);
		A -= shita;
		int migi = min(N / 2, B);
		B -= migi;
		int migiue = 0;
		int masu = (N / 2) * (M / 2);
		if (A % 2 && B % 2) {
			migiue = 1;
			A--;
			B--;
			masu--;
		}
		int Akazu = (A + 1) / 2;
		int Bkazu = (B + 1) / 2;
		if (Akazu + Bkazu > masu) co("NO");
		else {
			co("YES");
			rep(i, N) {
				rep(j, M) {
					if (i == N - 1) {
						if (j < shita * 2) {
							if (j % 2) cout << '>';
							else cout << '<';
						}
						else if (j == M - 1 && migi == N / 2) cout << 'v';
						else cout << '.';
					}
					else if (j == M - 1) {
						if (i == 0) {
							if (migiue) cout << '>';
							else cout << '.';
						}
						else if (i <= migi * 2) {
							if (i % 2) cout << '^';
							else cout << 'v';
						}
						else cout << '.';
					}
					else if (migiue && i == 0 && j == M - 2) cout << '<';
					else if (migiue && i == 0 && j == M - 3) cout << '^';
					else if (migiue && i == 1 && j == M - 2) cout << '.';
					else if (migiue && i == 1 && j == M - 3) cout << 'v';
					else {
						int doko = ((N - i - 2) / 2) * (M / 2) + j / 2 + 1;
						if (doko == Akazu && A % 2) {
							if (i % 2) {
								if (j % 2) cout << '>';
								else cout << '<';
							}
							else cout << '.';
						}
						else if (doko <= Akazu) {
							if (j % 2) cout << '>';
							else cout << '<';
						}
						else if (doko == Akazu + Bkazu && B % 2) {
							if (j % 2) {
								if (i % 2) cout << 'v';
								else cout << '^';
							}
							else cout << '.';
						}
						else if (doko <= Akazu + Bkazu) {
							if (i % 2) cout << 'v';
							else cout << '^';
						}
						else cout << '.';
					}
				}
				cout << endl;
			}
		}
	}
	else if (N % 2) {
		int shita = min(M / 2, A);
		A -= shita;
		int masu = (N / 2) * (M / 2);
		int Akazu = (A + 1) / 2;
		int Bkazu = (B + 1) / 2;
		if (Akazu + Bkazu > masu) co("NO");
		else {
			co("YES");
			rep(i, N) {
				rep(j, M) {
					if (i == N - 1) {
						if (j < shita * 2) {
							if (j % 2) cout << '>';
							else cout << '<';
						}
						else cout << '.';
					}
					else {
						int doko = (i / 2) * (M / 2) + j / 2 + 1;
						if (doko == Akazu && A % 2) {
							if (i % 2) {
								if (j % 2) cout << '>';
								else cout << '<';
							}
							else cout << '.';
						}
						else if (doko <= Akazu) {
							if (j % 2) cout << '>';
							else cout << '<';
						}
						else if (doko == Akazu + Bkazu && B % 2) {
							if (j % 2) {
								if (i % 2) cout << 'v';
								else cout << '^';
							}
							else cout << '.';
						}
						else if (doko <= Akazu + Bkazu) {
							if (i % 2) cout << 'v';
							else cout << '^';
						}
						else cout << '.';
					}
				}
				cout << endl;
			}
		}
	}
	else if (M % 2) {
		int migi = min(N / 2, B);
		B -= migi;
		int masu = (N / 2) * (M / 2);
		int Akazu = (A + 1) / 2;
		int Bkazu = (B + 1) / 2;
		if (Akazu + Bkazu > masu) co("NO");
		else {
			co("YES");
			rep(i, N) {
				rep(j, M) {
					if (j == M - 1) {
						if (i < migi * 2) {
							if (i % 2) cout << 'v';
							else cout << '^';
						}
						else cout << '.';
					}
					else {
						int doko = (i / 2) * (M / 2) + j / 2 + 1;
						if (doko == Akazu && A % 2) {
							if (i % 2) {
								if (j % 2) cout << '>';
								else cout << '<';
							}
							else cout << '.';
						}
						else if (doko <= Akazu) {
							if (j % 2) cout << '>';
							else cout << '<';
						}
						else if (doko == Akazu + Bkazu && B % 2) {
							if (j % 2) {
								if (i % 2) cout << 'v';
								else cout << '^';
							}
							else cout << '.';
						}
						else if (doko <= Akazu + Bkazu) {
							if (i % 2) cout << 'v';
							else cout << '^';
						}
						else cout << '.';
					}
				}
				cout << endl;
			}
		}
	}
	else {
		int masu = (N / 2) * (M / 2);
		int Akazu = (A + 1) / 2;
		int Bkazu = (B + 1) / 2;
		if (Akazu + Bkazu > masu) co("NO");
		else {
			co("YES");
			rep(i, N) {
				rep(j, M) {
					int doko = (i / 2) * (M / 2) + j / 2 + 1;
					if (doko == Akazu && A % 2) {
						if (i % 2) {
							if (j % 2) cout << '>';
							else cout << '<';
						}
						else cout << '.';
					}
					else if (doko <= Akazu) {
						if (j % 2) cout << '>';
						else cout << '<';
					}
					else if (doko == Akazu + Bkazu && B % 2) {
						if (j % 2) {
							if (i % 2) cout << 'v';
							else cout << '^';
						}
						else cout << '.';
					}
					else if (doko <= Akazu + Bkazu) {
						if (i % 2) cout << 'v';
						else cout << '^';
					}
					else cout << '.';
				}
				cout << endl;
			}
		}
	}

	Would you please return 0;
}

Measured memory_bytes: 1280