مربع لاتین n×n، یک جدول n×n است که هر سطر و هر ستون آن حاوی یک جایگشت از اعداد 1,2,...,n است. سطرها و ستونهای مربع لاتین را از بالا به پایین و از چپ به راست با 1 تا n شمارهگذاری میکنیم.
ما در این سؤال میخواهیم دو مربع لاتین n×n را به هم تبدیل کنیم. حرکات مجاز برای این تبدیل٬ جابهجا کردن دو سطر مربع یا دو ستون آن با هم است. معاوضهی سطر iام با سطر jام را با دستور«row i j» نشان میدهیم و معاوضهی ستون i با ستون j را با دستور«col i j».(1≤i,j≤ )
برنامهای بنویسید که با خواندن دو مربع لاتین از ورودی٬ تشخیص دهد که آیا این دو مربع با دستورهای بالا قابل تبدیل به هم هستند یا نه. در صورتی که تبدیل ممکن نبود٬ در تنها سطر خروجی NO چاپ کنید و در حالت دیگر YES و دنبالهای از دستورات که دو مربع را به هم تبدیل میکنند٬چاپ کنید.
اگر راهحلی وجود نداشت٬ در تنها سطر خروجی٬ بنویسید NO. در غیر این صورت٬ باید در سطر اول رشته YES و در m سطر بعدی در هر سطر یکی از دو نوع دستور «row i j» یا «col i j» را چاپ کنید که با اجرای این دنباله از دستورها بر روی مربع مبدا٬ به مربع مقصد میرسیم.
بدیهی است راهحلهای مختلفی برای تبدیل دو مربع وجود دارد و تمامی آنها قابل قبول هستند. توجه کنیدکه لزومی ندارد دنبالهی تبدیلات شما٬ کمترین تعداد دستود را داشته باشد.