Олимпиадный тренинг

Задача . C. Домашнее задание


Задача

Темы: Конструктив *3100

Сегодня Петя плохо вел себя на уроке математики, и учительница наказала его, дав ему дополнительное домашнее задание. Она назвала ему три числа — n, m и k и сказала, чтобы он отметил на прямоугольной клетчатой доске размером n × m одну или несколько клеток.

Отмеченные клетки должны образовывать связную фигуру. При этом должно быть ровно k способов выбрать три отмеченные клетки, так, чтобы они образовывали «уголок» — все три выбранные клетки лежали внутри квадрата 2 × 2.

Множество клеток образует связную фигуру, если из любой клетки множества можно добраться до любой другой, перемещаясь в процессе с клетки на соседнюю по стороне.

Петя знает, что задание непростое, поэтому попросил вас, как программиста и лучшего друга, помочь ему с этим заданием.

Входные данные

Входные данные содержат несколько тестовых наборов. В первой строке задано количество тестов t (1 ≤ t ≤ 100).

Каждый из следующих t тестов описывается одной строкой из трех чисел n, m и k (3 ≤ n, m, n × m ≤ 105, 0 ≤ k ≤ 109).

Гарантируется, что сумма n × m по всем тестам не превосходит 105.

Выходные данные

Для каждого теста выведите ответ на него.

Если ответ существует, выведите n строк по m символов, где '*' означает отмеченную клетку, а '.' - неотмеченную.

Если ответа не существует, в единственной строке выведите -1.

После каждого теста, кроме последнего, выведите пустую строку.


Примеры
Входные данныеВыходные данные
1 3
3 3 4
3 3 5
3 3 3
.*.
***
.*.
**.
**.
*..
.*.
***
*..

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя