module main; // 2次元グリッド、8近傍 import std; void main() { // 入力 int T, A, B; readln.chomp.formattedRead("%d %d %d", T, A, B); // 答えの計算と出力 if (T < max(A, B) || (T == 1 && A == 0 && B == 0)) { writeln("NO"); return; } string[] ans; while (A > 1 && B > 1) { string tmp; if (1 < A) { tmp ~= '^'; A--; } if (1 < B) { tmp ~= '>'; B--; } ans ~= tmp; T--; } if (A == 1) { if (B == 1) { if (T % 2 == 1) { ans ~= "^>"; T--; } else { ans ~= ["^", ">"]; T -= 2; } } else { if (T % 2 == 1) { ans ~= "^"; T--; } else { ans ~= [">", "^<"]; T -= 2; } } } else { if (B == 1) { if (T % 2 == 1) ans ~= ">"; else ans ~= ["^", ">v"]; } } assert(T % 2 == 0); while (T > 0) { ans ~= ["^", "v"]; T -= 2; } writeln("YES"); writefln("%-(%s\n%)", ans); }