process.stdin.resume();
process.stdin.setEncoding('utf8');
// your code goes here
const draw = keys => {
const dir = {'>': {y: 0, x: 1}, 'v': {y: 1, x: 0}, '<': {y: 0, x: -1}, '^': {y: -1, x: 0}};
const max = {y: 0, x: 0}, min = {y: 0, x: 0};
const scr = [];
const lastPos = [...keys].reduce((acc, key) => {
const {y, x} = dir[key];
const cur = {y: acc.y + y, x: acc.x + x};
if (!(cur.y in scr)) scr[cur.y] = [];
scr[cur.y][cur.x] = key;
if (cur.y > max.y) max.y = cur.y;
else if (cur.y < min.y) min.y = cur.y;
if (cur.x > max.x) max.x = cur.x;
else if (cur.x < min.x) min.x = cur.x;
return cur;
}, {y: -dir[keys[0]].y, x: -dir[keys[0]].x});
const strs = [];
for (let y = min.y; y <= max.y; y++) {
let row = '';
for (let x = min.x; x <= max.x; x++) {
row += scr[y][x] || '*';
}
strs.push(row);
}
return strs.join('\n');
}
console.log(draw('<<<<^^^^>>>>>vv<<<<<<<<<<<vvv>>>^^^^^^^>>>>>>>>>>vvvvvv'));
cHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTsKcHJvY2Vzcy5zdGRpbi5zZXRFbmNvZGluZygndXRmOCcpOwoKLy8geW91ciBjb2RlIGdvZXMgaGVyZQpjb25zdCBkcmF3ID0ga2V5cyA9PiB7CiAgY29uc3QgZGlyID0geyc+Jzoge3k6IDAsIHg6IDF9LCAndic6IHt5OiAxLCB4OiAwfSwgJzwnOiB7eTogMCwgeDogLTF9LCAnXic6IHt5OiAtMSwgeDogMH19OwogIGNvbnN0IG1heCA9IHt5OiAwLCB4OiAwfSwgbWluID0ge3k6IDAsIHg6IDB9OwogIGNvbnN0IHNjciA9IFtdOwogIGNvbnN0IGxhc3RQb3MgPSBbLi4ua2V5c10ucmVkdWNlKChhY2MsIGtleSkgPT4gewogICAgY29uc3Qge3ksIHh9ID0gZGlyW2tleV07CiAgICBjb25zdCBjdXIgPSB7eTogYWNjLnkgKyB5LCB4OiBhY2MueCArIHh9OwogICAgaWYgKCEoY3VyLnkgaW4gc2NyKSkgc2NyW2N1ci55XSA9IFtdOwogICAgc2NyW2N1ci55XVtjdXIueF0gPSBrZXk7CgogICAgaWYgKGN1ci55ID4gbWF4LnkpIG1heC55ID0gY3VyLnk7CiAgICBlbHNlIGlmIChjdXIueSA8IG1pbi55KSBtaW4ueSA9IGN1ci55OwogICAgaWYgKGN1ci54ID4gbWF4LngpIG1heC54ID0gY3VyLng7CiAgICBlbHNlIGlmIChjdXIueCA8IG1pbi54KSBtaW4ueCA9IGN1ci54OwoKICAgIHJldHVybiBjdXI7CiAgfSwge3k6IC1kaXJba2V5c1swXV0ueSwgeDogLWRpcltrZXlzWzBdXS54fSk7CiAgY29uc3Qgc3RycyA9IFtdOwogIGZvciAobGV0IHkgPSBtaW4ueTsgeSA8PSBtYXgueTsgeSsrKSB7CiAgICBsZXQgcm93ID0gJyc7CiAgICBmb3IgKGxldCB4ID0gbWluLng7IHggPD0gbWF4Lng7IHgrKykgewogICAgICByb3cgKz0gc2NyW3ldW3hdIHx8ICcqJzsKICAgIH0KICAgIHN0cnMucHVzaChyb3cpOwogIH0KICByZXR1cm4gc3Rycy5qb2luKCdcbicpOwp9CmNvbnNvbGUubG9nKGRyYXcoJzw8PDxeXl5ePj4+Pj52djw8PDw8PDw8PDw8dnZ2Pj4+Xl5eXl5eXj4+Pj4+Pj4+Pj52dnZ2dnYnKSk7