#include <iostream>
#include <vector>
using namespace std;
void ToPrint(int n, int m, int *currentNumberColumn, int *currentNumberRow, int symbolToPrint) {
(*currentNumberColumn)++; // Инкрементируем значение номера столбца, так как есть символ на печать
if (*currentNumberColumn > n) {
cout << endl; // Переходим на новую строку
(*currentNumberRow)++;
*currentNumberColumn = 1;
} // Если следует выполнить переход на следующую строку, выполняем этот переход по всем индексам
if (*currentNumberRow > m)
exit(0); // Заканчиваем работу программы, как только количество строк превышает заданное
else if (symbolToPrint == 32 && *currentNumberColumn == 1) // В таблице ASCII 32 - пробел
(*currentNumberColumn)--; // Возвращаем предыдущее значение номера столбца, так как ничего не было напечатано
else if (symbolToPrint == 32)
cout << char(symbolToPrint); // Выводим пробел, если это не начало строки
else
cout << symbolToPrint;
}
int main() {
int n, m; // Количество столбцов и строк соответственно
cin >> n >> m;
int start = 0; // Индекс элемента текущей цифры с которой ведется сравнение
int quantity = 0; // Количество идущих подряд одинаковых элементов в данном члене
int currentNumberRow = 1; // Номер текущей строки, в которой будет записан символ
int currentNumberColumn = 0; // Номер текущего столбца, в который будет записан символ
vector <short> currentTerm; // Вектор, хранящий значение текущего члена последовательности
vector <short> previousTerm; // Вектор, хранящий значение предыдущего члена последовательности
previousTerm.push_back(0); // Записываем в вектор предыдущего члена значение первого члена последовательности
ToPrint(n, m, ¤tNumberColumn, ¤tNumberRow, 0); // Выводим первый член последовательности
ToPrint(n, m, ¤tNumberColumn, ¤tNumberRow, 32); // Выводим пробел после него (если он не понадобится его уберет метод ToPrint)
while (true) {
for (int i = 0; i < previousTerm.size(); i++) {
if (previousTerm[i] == previousTerm[start])
quantity++; // Считаем количество идущих подряд одинаковых цифр
else {
currentTerm.push_back(quantity); // Записываем в вектор количество текущих цифр
currentTerm.push_back(previousTerm[start]); // Записываем саму цифру
ToPrint(n, m, ¤tNumberColumn, ¤tNumberRow, quantity);
ToPrint(n, m, ¤tNumberColumn, ¤tNumberRow, previousTerm[start]); // Печатаем полученные данные
start += quantity; // Переходим к следующей цифре для сравнения
quantity = 1; // Присваиваем количеству одинаковых идущих подряд цифр 1, так как мы перешли к следующей цифре
} // Если значение текущей цифры не совпадает с предыдущим, выполняем вывод и заполнение вектора следующего члена
if (i == (previousTerm.size() - 1)) {
currentTerm.push_back(quantity);
currentTerm.push_back(previousTerm[start]);
ToPrint(n, m, ¤tNumberColumn, ¤tNumberRow, quantity);
ToPrint(n, m, ¤tNumberColumn, ¤tNumberRow, previousTerm[start]);
} // Отдельный вывод для последнего элемента данного члена
} // Цикл для прохода по всем цифрам предыдущего члена последовательности
start = 0;
quantity = 0; // Обнуляем все параметры для подсчета, так как дальше будем работать со следующим членом последовательности
ToPrint(n, m, ¤tNumberColumn, ¤tNumberRow, 32); // Печатаем пробел после текущего члена последовательности
previousTerm.clear();
previousTerm = currentTerm; // Записываем в вектор предыдущего члена текущий построенный член последовательности
currentTerm.clear();
} // Бесконечный цикл, так как условие окончание работы программы задано в методе печати
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBUb1ByaW50KGludCBuLCBpbnQgbSwgaW50ICpjdXJyZW50TnVtYmVyQ29sdW1uLCBpbnQgKmN1cnJlbnROdW1iZXJSb3csIGludCBzeW1ib2xUb1ByaW50KSB7CgkoKmN1cnJlbnROdW1iZXJDb2x1bW4pKys7IC8vINCY0L3QutGA0LXQvNC10L3RgtC40YDRg9C10Lwg0LfQvdCw0YfQtdC90LjQtSDQvdC+0LzQtdGA0LAg0YHRgtC+0LvQsdGG0LAsINGC0LDQuiDQutCw0Log0LXRgdGC0Ywg0YHQuNC80LLQvtC7INC90LAg0L/QtdGH0LDRgtGMCglpZiAoKmN1cnJlbnROdW1iZXJDb2x1bW4gPiBuKSB7CgkJY291dCA8PCBlbmRsOyAvLyDQn9C10YDQtdGF0L7QtNC40Lwg0L3QsCDQvdC+0LLRg9GOINGB0YLRgNC+0LrRgwoJICAJKCpjdXJyZW50TnVtYmVyUm93KSsrOwoJICAJKmN1cnJlbnROdW1iZXJDb2x1bW4gPSAxOyAKCX0gLy8g0JXRgdC70Lgg0YHQu9C10LTRg9C10YIg0LLRi9C/0L7Qu9C90LjRgtGMINC/0LXRgNC10YXQvtC0INC90LAg0YHQu9C10LTRg9GO0YnRg9GOINGB0YLRgNC+0LrRgywg0LLRi9C/0L7Qu9C90Y/QtdC8INGN0YLQvtGCINC/0LXRgNC10YXQvtC0INC/0L4g0LLRgdC10Lwg0LjQvdC00LXQutGB0LDQvAoJaWYgKCpjdXJyZW50TnVtYmVyUm93ID4gbSkKCSAgICBleGl0KDApOyAvLyDQl9Cw0LrQsNC90YfQuNCy0LDQtdC8INGA0LDQsdC+0YLRgyDQv9GA0L7Qs9GA0LDQvNC80YssINC60LDQuiDRgtC+0LvRjNC60L4g0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtGA0L7QuiDQv9GA0LXQstGL0YjQsNC10YIg0LfQsNC00LDQvdC90L7QtQoJZWxzZSBpZiAoc3ltYm9sVG9QcmludCA9PSAzMiAmJiAqY3VycmVudE51bWJlckNvbHVtbiA9PSAxKSAvLyDQkiDRgtCw0LHQu9C40YbQtSBBU0NJSSAzMiAtINC/0YDQvtCx0LXQuwoJICAgICgqY3VycmVudE51bWJlckNvbHVtbiktLTsgLy8g0JLQvtC30LLRgNCw0YnQsNC10Lwg0L/RgNC10LTRi9C00YPRidC10LUg0LfQvdCw0YfQtdC90LjQtSDQvdC+0LzQtdGA0LAg0YHRgtC+0LvQsdGG0LAsINGC0LDQuiDQutCw0Log0L3QuNGH0LXQs9C+INC90LUg0LHRi9C70L4g0L3QsNC/0LXRh9Cw0YLQsNC90L4KICAgIGVsc2UgaWYgKHN5bWJvbFRvUHJpbnQgPT0gMzIpCiAgICAgICAgY291dCA8PCBjaGFyKHN5bWJvbFRvUHJpbnQpOyAvLyDQktGL0LLQvtC00LjQvCDQv9GA0L7QsdC10LssINC10YHQu9C4INGN0YLQviDQvdC1INC90LDRh9Cw0LvQviDRgdGC0YDQvtC60LgKICAgIGVsc2UKICAgICAgCWNvdXQgPDwgc3ltYm9sVG9QcmludDsKfQoKaW50IG1haW4oKSB7CglpbnQgbiwgbTsgLy8g0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtC+0LvQsdGG0L7QsiDQuCDRgdGC0YDQvtC6INGB0L7QvtGC0LLQtdGC0YHRgtCy0LXQvdC90L4KCWNpbiA+PiBuID4+IG07CglpbnQgc3RhcnQgPSAwOyAvLyDQmNC90LTQtdC60YEg0Y3Qu9C10LzQtdC90YLQsCDRgtC10LrRg9GJ0LXQuSDRhtC40YTRgNGLINGBINC60L7RgtC+0YDQvtC5INCy0LXQtNC10YLRgdGPINGB0YDQsNCy0L3QtdC90LjQtQogICAgaW50IHF1YW50aXR5ID0gMDsgLy8g0JrQvtC70LjRh9C10YHRgtCy0L4g0LjQtNGD0YnQuNGFINC/0L7QtNGA0Y/QtCDQvtC00LjQvdCw0LrQvtCy0YvRhSDRjdC70LXQvNC10L3RgtC+0LIg0LIg0LTQsNC90L3QvtC8INGH0LvQtdC90LUKICAgIGludCBjdXJyZW50TnVtYmVyUm93ID0gMTsgLy8g0J3QvtC80LXRgCDRgtC10LrRg9GJ0LXQuSDRgdGC0YDQvtC60LgsINCyINC60L7RgtC+0YDQvtC5INCx0YPQtNC10YIg0LfQsNC/0LjRgdCw0L0g0YHQuNC80LLQvtC7CiAgICBpbnQgY3VycmVudE51bWJlckNvbHVtbiA9IDA7IC8vINCd0L7QvNC10YAg0YLQtdC60YPRidC10LPQviDRgdGC0L7Qu9Cx0YbQsCwg0LIg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQt9Cw0L/QuNGB0LDQvSDRgdC40LzQstC+0LsKICAgIHZlY3RvciA8c2hvcnQ+IGN1cnJlbnRUZXJtOyAvLyDQktC10LrRgtC+0YAsINGF0YDQsNC90Y/RidC40Lkg0LfQvdCw0YfQtdC90LjQtSDRgtC10LrRg9GJ0LXQs9C+INGH0LvQtdC90LAg0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC4CiAgICB2ZWN0b3IgPHNob3J0PiBwcmV2aW91c1Rlcm07IC8vINCS0LXQutGC0L7RgCwg0YXRgNCw0L3Rj9GJ0LjQuSDQt9C90LDRh9C10L3QuNC1INC/0YDQtdC00YvQtNGD0YnQtdCz0L4g0YfQu9C10L3QsCDQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LgKCXByZXZpb3VzVGVybS5wdXNoX2JhY2soMCk7IC8vINCX0LDQv9C40YHRi9Cy0LDQtdC8INCyINCy0LXQutGC0L7RgCDQv9GA0LXQtNGL0LTRg9GJ0LXQs9C+INGH0LvQtdC90LAg0LfQvdCw0YfQtdC90LjQtSDQv9C10YDQstC+0LPQviDRh9C70LXQvdCwINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLQuAogICAgVG9QcmludChuLCBtLCAmY3VycmVudE51bWJlckNvbHVtbiwgJmN1cnJlbnROdW1iZXJSb3csIDApOyAvLyDQktGL0LLQvtC00LjQvCDQv9C10YDQstGL0Lkg0YfQu9C10L0g0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC4CiAgICBUb1ByaW50KG4sIG0sICZjdXJyZW50TnVtYmVyQ29sdW1uLCAmY3VycmVudE51bWJlclJvdywgMzIpOyAvLyDQktGL0LLQvtC00LjQvCDQv9GA0L7QsdC10Lsg0L/QvtGB0LvQtSDQvdC10LPQviAo0LXRgdC70Lgg0L7QvSDQvdC1INC/0L7QvdCw0LTQvtCx0LjRgtGB0Y8g0LXQs9C+INGD0LHQtdGA0LXRgiDQvNC10YLQvtC0IFRvUHJpbnQpCiAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJldmlvdXNUZXJtLnNpemUoKTsgaSsrKSB7IAogICAgCSAgICAgICAgaWYgKHByZXZpb3VzVGVybVtpXSA9PSBwcmV2aW91c1Rlcm1bc3RhcnRdKSAKICAgIAkgCSAgICAgICAgcXVhbnRpdHkrKzsgLy8g0KHRh9C40YLQsNC10Lwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LjQtNGD0YnQuNGFINC/0L7QtNGA0Y/QtCDQvtC00LjQvdCw0LrQvtCy0YvRhSDRhtC40YTRgAogICAgCSAgICAgICAgZWxzZSB7CiAgICAJCSAgICAgIAljdXJyZW50VGVybS5wdXNoX2JhY2socXVhbnRpdHkpOyAvLyDQl9Cw0L/QuNGB0YvQstCw0LXQvCDQsiDQstC10LrRgtC+0YAg0LrQvtC70LjRh9C10YHRgtCy0L4g0YLQtdC60YPRidC40YUg0YbQuNGE0YAKICAgIAkgICAgICAgICAgCWN1cnJlbnRUZXJtLnB1c2hfYmFjayhwcmV2aW91c1Rlcm1bc3RhcnRdKTsgLy8g0JfQsNC/0LjRgdGL0LLQsNC10Lwg0YHQsNC80YMg0YbQuNGE0YDRgwogICAgCSAgICAgICAgICAJVG9QcmludChuLCBtLCAmY3VycmVudE51bWJlckNvbHVtbiwgJmN1cnJlbnROdW1iZXJSb3csIHF1YW50aXR5KTsKICAgIAkgICAgICAgICAgCVRvUHJpbnQobiwgbSwgJmN1cnJlbnROdW1iZXJDb2x1bW4sICZjdXJyZW50TnVtYmVyUm93LCBwcmV2aW91c1Rlcm1bc3RhcnRdKTsgLy8g0J/QtdGH0LDRgtCw0LXQvCDQv9C+0LvRg9GH0LXQvdC90YvQtSDQtNCw0L3QvdGL0LUKICAgIAkgICAgICAgICAgCXN0YXJ0ICs9IHF1YW50aXR5OyAvLyDQn9C10YDQtdGF0L7QtNC40Lwg0Log0YHQu9C10LTRg9GO0YnQtdC5INGG0LjRhNGA0LUg0LTQu9GPINGB0YDQsNCy0L3QtdC90LjRjwogICAgCSAgICAgICAgICAJcXVhbnRpdHkgPSAxOyAvLyDQn9GA0LjRgdCy0LDQuNCy0LDQtdC8INC60L7Qu9C40YfQtdGB0YLQstGDINC+0LTQuNC90LDQutC+0LLRi9GFINC40LTRg9GJ0LjRhSDQv9C+0LTRgNGP0LQg0YbQuNGE0YAgMSwg0YLQsNC6INC60LDQuiDQvNGLINC/0LXRgNC10YjQu9C4INC6INGB0LvQtdC00YPRjtGJ0LXQuSDRhtC40YTRgNC1CiAgICAJICAgICAgICB9IC8vINCV0YHQu9C4INC30L3QsNGH0LXQvdC40LUg0YLQtdC60YPRidC10Lkg0YbQuNGE0YDRiyDQvdC1INGB0L7QstC/0LDQtNCw0LXRgiDRgSDQv9GA0LXQtNGL0LTRg9GJ0LjQvCwg0LLRi9C/0L7Qu9C90Y/QtdC8INCy0YvQstC+0LQg0Lgg0LfQsNC/0L7Qu9C90LXQvdC40LUg0LLQtdC60YLQvtGA0LAg0YHQu9C10LTRg9GO0YnQtdCz0L4g0YfQu9C10L3QsAogICAgCSAgICAgICAgaWYgKGkgPT0gKHByZXZpb3VzVGVybS5zaXplKCkgLSAxKSkgewogICAgCSAgICAgICAgICAgIGN1cnJlbnRUZXJtLnB1c2hfYmFjayhxdWFudGl0eSk7IAogICAgCSAgICAgICAgICAgIGN1cnJlbnRUZXJtLnB1c2hfYmFjayhwcmV2aW91c1Rlcm1bc3RhcnRdKTsKICAgIAkgICAgICAgICAgICBUb1ByaW50KG4sIG0sICZjdXJyZW50TnVtYmVyQ29sdW1uLCAmY3VycmVudE51bWJlclJvdywgcXVhbnRpdHkpOwogICAgCSAgICAgICAgICAgIFRvUHJpbnQobiwgbSwgJmN1cnJlbnROdW1iZXJDb2x1bW4sICZjdXJyZW50TnVtYmVyUm93LCBwcmV2aW91c1Rlcm1bc3RhcnRdKTsKICAgIAkgICAgICAgIH0gLy8g0J7RgtC00LXQu9GM0L3Ri9C5INCy0YvQstC+0LQg0LTQu9GPINC/0L7RgdC70LXQtNC90LXQs9C+INGN0LvQtdC80LXQvdGC0LAg0LTQsNC90L3QvtCz0L4g0YfQu9C10L3QsAogICAgICAgICAgIH0gLy8g0KbQuNC60Lsg0LTQu9GPINC/0YDQvtGF0L7QtNCwINC/0L4g0LLRgdC10Lwg0YbQuNGE0YDQsNC8INC/0YDQtdC00YvQtNGD0YnQtdCz0L4g0YfQu9C10L3QsCDQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LgKICAgICAgICAgICBzdGFydCA9IDA7ICAgICAgCiAgICAgICAgICAgcXVhbnRpdHkgPSAwOyAvLyDQntCx0L3Rg9C70Y/QtdC8INCy0YHQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC/0L7QtNGB0YfQtdGC0LAsINGC0LDQuiDQutCw0Log0LTQsNC70YzRiNC1INCx0YPQtNC10Lwg0YDQsNCx0L7RgtCw0YLRjCDRgdC+INGB0LvQtdC00YPRjtGJ0LjQvCDRh9C70LXQvdC+0Lwg0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC4CiAgICAgICAgICAgVG9QcmludChuLCBtLCAmY3VycmVudE51bWJlckNvbHVtbiwgJmN1cnJlbnROdW1iZXJSb3csIDMyKTsgLy8g0J/QtdGH0LDRgtCw0LXQvCDQv9GA0L7QsdC10Lsg0L/QvtGB0LvQtSDRgtC10LrRg9GJ0LXQs9C+INGH0LvQtdC90LAg0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC4CiAgICAgICAgICAgcHJldmlvdXNUZXJtLmNsZWFyKCk7IAogICAgICAgICAgIHByZXZpb3VzVGVybSA9IGN1cnJlbnRUZXJtOyAvLyDQl9Cw0L/QuNGB0YvQstCw0LXQvCDQsiDQstC10LrRgtC+0YAg0L/RgNC10LTRi9C00YPRidC10LPQviDRh9C70LXQvdCwINGC0LXQutGD0YnQuNC5INC/0L7RgdGC0YDQvtC10L3QvdGL0Lkg0YfQu9C10L0g0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtC4CiAgICAgICAgICAgY3VycmVudFRlcm0uY2xlYXIoKTsKICAgIH0gLy8g0JHQtdGB0LrQvtC90LXRh9C90YvQuSDRhtC40LrQuywg0YLQsNC6INC60LDQuiDRg9GB0LvQvtCy0LjQtSDQvtC60L7QvdGH0LDQvdC40LUg0YDQsNCx0L7RgtGLINC/0YDQvtCz0YDQsNC80LzRiyDQt9Cw0LTQsNC90L4g0LIg0LzQtdGC0L7QtNC1INC/0LXRh9Cw0YLQuAp9