题目描述
MirkoMirkoMirko在他祖父的阁楼上发现了一系列可以追溯到第二次世界大战的玩具坦克。他立即打电话给他的朋友SlavkSlavkSlavk和他一起玩。他们制作了一个战场——一块由N行N列正方形组成的木板。
每个坦克可以在一次移动中移动到四个相邻的方块之一。坦克可以射击同一排和一列的任意方格,守卫着它所在的行和列。
此外,任何时候都不能有两个坦克在同一个方格上。
经过几个小时的游戏和之前的两次尝试,MirkoMirkoMirko的妈妈让他们来吃午饭,他们决定重新排列坦克,以便每个坦克守卫不同的行和列(也意味着每一行和每列只包含一个坦克)。
但是,他们希望使用最小的移动次数来做到这一点。
编写一个程序,找到重新排列坦克所需的最小移动次数,以便每一行和每一列包含一个单一的坦克,以及这样一个最短的移动次数。
输入格式
输入的第一行包含整数N(5≤N≤500)N (5≤N≤500)N(5≤N≤500)。
以下N行中的每一行都包含两个整数RRR和S(1≤R,S≤N)S(1≤R,S≤N)S(1≤R,S≤N),即妈妈让他们吃午饭时单个坦克的行和列。没有两个坦克在同一个广场上。
行和列标记为111到NNN,自上而下和从左到右
输出格式
在第一行输出最小移动次数kkk。
接下来的kkk行中的每一行都应包含正在移动的坦克及其移动方向,
被一个空格隔开。
坦克按输入中给出的顺序编号为111到NNN。
方向可以是四个大写字母之一:'LLL'表示左,'RRR'表示右,'UUU'表示上,'DDD'表示下。
注:排序方法不唯一。