Universal Cup Judging System

Universal Cup

Limite de temps : 2 s Limite de mémoire : 1024 MB
Statistiques

Questo problema ha un allegato. Puoi usarlo per simulare e visualizzare i movimenti del robot.

problem_23603_b923d7f472cb2d50f053c89f0e9688e6.png

VegiCat ha un robot su una griglia bidimensionale infinita. Vuole farlo muovere dalla cella $s = (s_x, s_y)$ alla cella $t = (t_x, t_y)$. Ogni cella ha coordinate intere. Le celle $s$ e $t$ possono coincidere.

Il robot segue una stringa $p$ di istruzioni. Ogni carattere è L, R, U oppure D. Sia $|p|$ la lunghezza di $p$.

Il robot parte da $s$. Prima che esegua qualsiasi istruzione, puoi posizionare al massimo $|p|$ ostacoli in celle distinte. Le coordinate $(x, y)$ di ciascun ostacolo devono soddisfare $-2 \cdot 10^9 \le x, y \le 2 \cdot 10^9$. Né $s$ né $t$ possono contenere un ostacolo. Ogni ostacolo occupa una cella e rimane fisso per tutto il processo; tutte le altre celle sono prive di ostacoli.

Il robot esegue le istruzioni $p_1, p_2, \ldots, p_{|p|}$ in ordine. Per ogni istruzione, partendo dalla sua cella attuale $(x, y)$, si muove lungo la seguente sequenza di celle:

  • L: $(x, y) \to (x - 1, y) \to (x - 2, y) \to \cdots$;
  • R: $(x, y) \to (x + 1, y) \to (x + 2, y) \to \cdots$;
  • U: $(x, y) \to (x, y + 1) \to (x, y + 2) \to \cdots$;
  • D: $(x, y) \to (x, y - 1) \to (x, y - 2) \to \cdots$.

Il robot compie ripetutamente un passo nella direzione specificata finché la cella successiva non contiene alcun ostacolo. Si ferma nella cella immediatamente precedente al primo ostacolo in quella direzione. Se la cella successiva nella direzione specificata contiene già un ostacolo prima che l'istruzione abbia inizio, il robot rimane sul posto, ma l'istruzione viene comunque completata. Se non c'è alcun ostacolo davanti in quella direzione, il robot si muoverebbe all'infinito e il posizionamento è non valido.

Il robot può raggiungere $t$ prima che tutte le istruzioni siano completate. Deve comunque eseguire tutte le istruzioni rimanenti. Costruisci un qualsiasi posizionamento di ostacoli che soddisfi i requisiti sopra indicati in modo che il robot termini in $t$ dopo l'ultima istruzione, oppure segnala che un tale posizionamento non esiste.

Input

La prima riga contiene un intero $T$ ($1 \le T \le 10^5$), il numero di casi di test. Segue la descrizione dei casi di test.

La prima riga di ciascun caso di test contiene due interi $s_x$ e $s_y$ ($-10^9 \le s_x, s_y \le 10^9$), le coordinate della cella di partenza.

La seconda riga contiene due interi $t_x$ e $t_y$ ($-10^9 \le t_x, t_y \le 10^9$), le coordinate della cella bersaglio.

La terza riga contiene la stringa di istruzioni $p$ ($1 \le |p| \le 10^5$), composta esclusivamente dai caratteri L, R, U e D.

È garantito che la somma di $|p|$ su tutti i casi di test non supera $10^5$.

Output

Per ciascun caso di test, stampa una risposta nell'ordine di input. I posizionamenti degli ostacoli per casi di test diversi sono indipendenti.

Se non esiste alcun posizionamento valido, stampa NO su una riga a sé stante.

Altrimenti, stampa YES sulla prima riga. Sulla seconda riga, stampa un intero $k$ ($0 \le k \le |p|$), il numero di ostacoli.

Poi stampa $k$ righe. La $i$-esima di queste righe deve contenere due interi $x_i$ e $y_i$ ($-2 \cdot 10^9 \le x_i, y_i \le 2 \cdot 10^9$), che specificano un ostacolo nella cella $(x_i, y_i)$.

Tutte le $k$ coppie di coordinate devono essere distinte, e nessuna può essere uguale a $s$ o a $t$. Il posizionamento deve consentire a ogni istruzione di terminare e lasciare il robot in $t$ dopo l'ultima istruzione. Se esistono più soluzioni, stampane una qualsiasi.

Puoi stampare il verdetto yes o no usando qualsiasi combinazione di maiuscole e minuscole. Ad esempio, yEs, yes, Yes e YES sono tutte accettate come risposte affermative.

Esempi

Input 1

6
0 0
1 0
RL
0 0
-1 0
URD
0 0
8 0
RLR
0 0
0 0
UDUD
0 0
2 5
RDULR
0 0
1 1
RURURU

Output 1

NO
NO
YES
2
-1 0
9 0
YES
2
0 -1
0 1
YES
5
-1 5
2 -1
2 6
3 0
3 5
YES
3
1 2
2 0
2 1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.