#include using namespace std; //repetition #define FOR(i,a,b) for(ll i=(a);i<(b);++i) #define rep(i, n) for(ll i = 0; i < (ll)(n); i++) //container util #define all(x) (x).begin(),(x).end() //typedef typedef long long ll; typedef vector VI; typedef vector VVI; typedef vector VLL; typedef vector VVLL; typedef vector VS; typedef pair PII; typedef pair PLL; //const value //const ll MOD = 1e9 + 7; //const int dx[] = {0,1,0,-1};//{0,0,1,1,1,-1,-1,-1}; //const int dy[] = {1,0,-1,0};//{1,-1,0,1,-1,0,1,-1}; //conversion inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;} inline ll toLL(string s) {ll v; istringstream sin(s);sin>>v;return v;} template inline string toString(T x) {ostringstream sout;sout<> t >> a >> b; if(t < max(a,b)){ cout << "NO" << endl; return 0; } // cerr << "not break" << endl; // 最小移動回数 int diff = t - max(a,b); if(diff % 2 == 0){ // このまま時間稼ぎする cout << "YES" << "\n"; int cnt = min(a,b); rep(i,cnt){ cout << "^>" << endl; a--; b--; // cout << "hi" << endl; } // cout << "a,b " << a << "," << b << endl; while(a>0){cout << "^" << endl;a--;} while(b>0){cout << ">" << endl;b--;} rep(i,diff/2){ cout << ">" << endl; cout << "<" << endl; } return 0; }else{ // 斜め移動の回数を1回減らす -> 移動回数が一回増える if(a > 0 && b > 0 && diff - 1 >= 0){ cout << "YES" << "\n"; cout << ">" << endl; cout << "^" << endl; a--,b--; int cnt = min(a,b); rep(i,cnt){ cout << "^>" << endl; a--; b--; } while(a>0){cout << "^" << endl; a--;} while(b>0){cout << ">" << endl; b--;} rep(i,(diff-1)/2){ cout << ">" << endl; cout << "<" << endl; } }else if(a > 0 && diff - 1 >= 0){ cout << "YES" << "\n"; cout << "^>" << endl; cout << "<" << endl; a--; while(a>0){cout << "^" << endl; a--;} rep(i,(diff-1)/2){ cout << ">" << endl; cout << "<" << endl; } }else if(b > 0 && diff - 1 >= 0){ cout << "YES" << "\n"; cout << "^>" << endl; cout << "v" << endl; b--; while(b>0){cout << ">" << endl; b--;} rep(i,(diff-1)/2){ cout << ">" << endl; cout << "<" << endl; } }else{ cout << "NO" << "\n"; } } return 0; }