Патрульний дрон#11110

Патрульний дрон

2 секунди
128 мегабайтів
Дуже складна

Ви наглядаєте за цінним артефактом у музеї, який охороняє сучасний патрульний дрон. Через нещодавні скорочення бюджету всю охорону, окрім автоматичного дрона, було знято, і головний зал тепер наглядається лише цією однією машиною. Дрон оснащений найсучаснішою системою виявлення, тому будь-яка спроба порушити його протоколи спровокує сигнал тривоги й активацію протидії.

На щастя, у вас є доступ до операційних рутин дрона, і ви вивчили принцип роботи його програмного забезпечення. Зал музею можна зобразити у вигляді евклідової площини, розбитої на клітинки розміром 1\times1. Центральна клітинка містить артефакт. Процесор дрона відстежує дві речі: його поточну позицію та послідовність інструкцій, представлену літерами , , , . Щохвилини дрон переходить у сусідню клітинку згідно з першою літерою послідовності (північ, південь, захід чи схід), оновлює свою позицію, після чого переносить цю літеру в кінець послідовності на наступну хвилину. Якщо послідовність інструкцій порожня, дрон не рухається. Ці інструкції завжди утворюють замкнений цикл, і дрон ніколи не заходить у клітинку .

Наразі дрон знаходиться у позиції (x_0, y_0) та виконує послідовність інструкцій . Ви можете перепрограмувати пам'ять дрона—ваше завдання перетворити поточну послідовність інструкцій на нову T', залишивши дрона у позиції (x_0, y_0). Однак ваші можливості обмежені: щохвилини ви маєте доступ лише до двох перших літер послідовності й можете виконати будь-яку з наступних операцій у будь-якій кількості разів:

Система зіткнень дрона виявить, якщо чинна послідовність інструкцій змусить дрона потрапити у —у такому разі зразу спрацює сигнал тривоги, чого треба уникнути за будь-яку ціну.

Знайдіть послідовність операцій, щоб перетворити у T', причому дрон повинен залишатися у (x_0, y_0) на кожному етапі й жоден проміжний маршрут дрона не повинен проходити через .

Вхідні дані

У першому рядку записано одне число (1 \le z \le 100)—кількість тестових випадків. Далі наведено описи тестів.

У кожному тестовому випадку у першому рядку два цілих числа x_0, y_0 (-1000 \le x_0, y_0 \le 1000)—початкова позиція дрона. Принаймні одне з x_0, y_0 не дорівнює нулю.

У наступному рядку два цілих числа , (2 \le n, m \le 2000)—довжина поточної послідовності та цільової послідовності T'.

У наступних двох рядках записані рядки довжиною та відповідно, що складаються лише з літер , , , , та відповідають та T'.

Поточна та цільова послідовності гарантовано різні. Обидві утворюють замкнені цикли, і жодна не проходить через .

Загальна кількість літер у всіх тестах не перевищує .

Вихідні дані

Для кожного тесту, якщо виконати завдання неможливо, виведіть у одному рядку "NO". Інакше виведіть "YES", а у наступному рядку—опис розв’язку. Розв’язок має складатися лише з символів \{C, N, S, E, W, -, R\}, де кожен символ означає окрему дію:

  • : додати на початок;

  • , , : додати , , на початок відповідно;

  • : забрати перші дві літери, але лише якщо це , , або ;

  • : поміняти місцями дві перші літери;

  • : чекати до кінця хвилини (доки дрон перейде до наступної інструкції).

Кілька операцій можна виконати за одну хвилину. Вам не потрібно мінімізувати довжину розв’язку, але опис дій має містити не більше 2 \times 10^7 символів. У кінці останньої хвилини позиція дрона і послідовність інструкцій мають відповідати T' у (x_0, y_0). Видаляти або міняти місцями елементи рядка дозволяється лише якщо у рядку є принаймні дві літери. На жодному етапі послідовність не повинна призвести до потрапляння дрона у .

Приклади

Приклад 1

Loading
Loading