Неудовлетворенный стандартным календарем своей операционной системы, Витя решил написать программу, которая будет выводить красиво отформатированный календарь. Он разработал формальные требования к календарю, но понял, что сам не способен написать соответствующую программу. Помогите ему.
Календарь состоит из блоков, каждый из которых соответствует одному месяцу. Блоки расположены в виде таблицы из \(k\) столбцов и \(12/k\) строк (\(k\) выбирается делителем числа 12). Месяцы выводятся в следующем порядке: первая строка содержит блоки, соответствующие месяцам с первого по \(k\)-ый, следующая — с \((k + 1)\)-го по \(2k\)-ый, и т. д.
Ширина всех блоков в столбце должна быть одинакова, высота всех блоков равна семи (числу дней в неделе). Между блоками различных строк таблицы выводится пустая строка, в каждой строке между соседними блоками из разных столбцов выводится три пробела.
Блок, соответствующий месяцу, устроен следующим образом. Каждой (в том числе неполной) неделе данного месяца в блоке соответствует столбец, имеющий ширину равную двум. Между двумя соседними столбцами в каждой строке выводится один пробел. Если несколько блоков располагаются в одном столбце в календаре, то для выравнивания ширины в те блоки, которые содержат меньше недель, в конец добавляется необходимое число пустых столбцов-недель. При этом разные столбцы календаря могут иметь разную ширину.
Все числа месяца заносятся в блок, соответствующий этому месяцу. Число заносится в ту строку блока, которая соответствует дню недели, на который приходится число в этом месяце. Число заносится в столбец блока, соответствующий неделе, в которой находится данное число. Однозначные числа дополняются слева одним пробелом. Таким образом, числа в столбце оказываются выравнены по правому краю.
Формат входных данных
Входной файл содержит описание года, календарь для которого следует вывести — три числа: \(d\) — день недели, на который приходится первое января (\(1 \le d \le 7\)), \(l\) — является ли год високосным (\(l = 1\) означает, что год является високосными, \(l = 0\) — что не является) и \(k\) — количество столбцов в календаре (\(k\) — одно из чисел \(1, 2, 3, 4, 6, 12\)).
Напомним, что високосный год отличается от обычного тем, что в високосном году февраль содержит 29 дней.
Формат выходных данных
Выведите календарь, отформатированный как описано в условии задачи. Проверяющая программа в этой задаче игнорирует пробелы в конце строк. В остальном календарь должен быть отформатирован в точности в соответствии с условием.
Для наглядности в примере вместо пробелов выведены точки. Ваша программа должна выводить пробелы.
Примеры
№ | Входные данные | Выходные данные |
1
|
4 1 4
|
5 12 19 26 2 9 16 23 1 8 15 22 29 5 12 19 26
6 13 20 27 3 10 17 24 2 9 16 23 30 6 13 20 27
7 14 21 28 4 11 18 25 3 10 17 24 31 7 14 21 28
1 8 15 22 29 5 12 19 26 4 11 18 25 1 8 15 22 29
2 9 16 23 30 6 13 20 27 5 12 19 26 2 9 16 23 30
3 10 17 24 31 7 14 21 28 6 13 20 27 3 10 17 24
4 11 18 25 1 8 15 22 29 7 14 21 28 4 11 18 25
3 10 17 24 31 7 14 21 28 5 12 19 26 2 9 16 23 30
4 11 18 25 1 8 15 22 29 6 13 20 27 3 10 17 24 31
5 12 19 26 2 9 16 23 30 7 14 21 28 4 11 18 25
6 13 20 27 3 10 17 24 1 8 15 22 29 5 12 19 26
7 14 21 28 4 11 18 25 2 9 16 23 30 6 13 20 27
1 8 15 22 29 5 12 19 26 3 10 17 24 31 7 14 21 28
2 9 16 23 30 6 13 20 27 4 11 18 25 1 8 15 22 29
6 13 20 27 4 11 18 25 1 8 15 22 29 6 13 20 27
7 14 21 28 5 12 19 26 2 9 16 23 30 7 14 21 28
1 8 15 22 29 6 13 20 27 3 10 17 24 1 8 15 22 29
2 9 16 23 30 7 14 21 28 4 11 18 25 2 9 16 23 30
3 10 17 24 1 8 15 22 29 5 12 19 26 3 10 17 24 31
4 11 18 25 2 9 16 23 30 6 13 20 27 4 11 18 25
5 12 19 26 3 10 17 24 31 7 14 21 28 5 12 19 26
|