module main; // https://sugarknri.hatenablog.com/entry/2016/06/02/053418 より // 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; } writeln("YES"); while (T > 0) { //自分は常に原点にいて目的地の方が動くと考え、(T,A,B)を(T-1,A',B')に更新していく if (B < T - 1) { write('<'); B++; } else if (B != 0) { write('>'); B--; } if (A % 2 == T % 2) { //AとTの偶奇が一致しないなら、最初から移動を始めると最後の1回が空きになってしまう //ひとたび一致すれば、その後は移動し続ける限り一致したままになる if (A < T - 1) { write('v'); A++; } else if (A != 0) { write('^'); A--; } } writeln(); T--; } }