eolymp
bolt
Try our new interface for solving problems
Problems

Великая стена

Великая стена

У короля Людовика двое сыновей. Они ненавидят друг друга, и король боится, что после его смерти страна будет уничтожена страшными войнами. Поэтому Людовик решил разделить свою страну на две части, в каждой из которых будет властвовать один из его сыновей. Он посадил их на трон в города \textbf{A} и \textbf{B}, и хочет построить минимально возможное количество фрагментов стены таким образом, чтобы не существовало пути из города \textbf{A} в город \textbf{B}. Страну, в которой властвует Людовик, можно упрощенно представить в виде прямоугольника \textbf{m}×\textbf{n}. В некоторых клетках этого прямоугольника расположены горы, по остальным же можно свободно перемещаться. Кроме этого, ландшафт в некоторых клетках удобен для строительства стены, в остальных же строительство невозможно. При поездках по стране можно перемещаться из клетки в соседнюю по стороне, только если ни одна из этих клеток не содержит горы или построенного фрагмента стены. \InputFile В первой строке входного файла содержатся числа \textbf{m} и \textbf{n} (\textbf{1} ≤ \textbf{m}, \textbf{n} ≤ \textbf{50}). Во второй строке заданы числа \textbf{k} и \textbf{l}, где \textbf{0} ≤ \textbf{k}, \textbf{l}, \textbf{k + l} ≤ \textbf{m}·\textbf{n}-\textbf{2}, \textbf{k} -- количество клеток, на которых расположены горы, а \textbf{l} -- количество клеток, на которых можно строить стену. Естественно, что на горах строить стену нельзя. Следующие \textbf{k} строк содержат координаты клеток с горами \textbf{x_i} и \textbf{y_i}, а за ними следуют \textbf{l} строк, содержащие координаты клеток, на которых можно построить стену -- \textbf{x_j} и \textbf{y_j}. Последние две строки содержат координаты городов \textbf{A} (\textbf{x_A} и \textbf{y_A}) и \textbf{B} (\textbf{x_B} и \textbf{y_B}) соответственно. Среди клеток, описанных в этих \textbf{k+l+2} строках, нет двух совпадающих. Гарантируется, что \textbf{1} ≤ \textbf{x_i}, \textbf{x_j}, \textbf{x_A}, \textbf{x_B}_\{ \}≤ \textbf{m} и \textbf{1} ≤ \textbf{y_i}, \textbf{y_j}, \textbf{y_A}, \textbf{y_B}_\{ \}≤ \textbf{n}. \OutputFile В первой строке выходного файла должно быть выведено минимальное количество фрагментов стены \textbf{F}, которые необходимо построить. В последующих \textbf{F} строках необходимо вывести один из возможных вариантов застройки. Если невозможно произвести требуемую застройку, то необходимо вывести в выходной файл единственное число \textbf{-1}.
Time limit 2 seconds
Memory limit 64 MiB
Input example #1
5 5
3 8
3 2
2 4
3 4
3 1
1 3
2 3
3 3
4 3
5 3
1 4
1 5
2 1
5 5
Output example #1
3
1 3
2 3
3 1