#include <iostream>
using namespace std;
// Узел. Используется в очереди
struct node {
bool val; // Значение узла
node *next; // Указатель на следующий узел
node(int v, node *n = NULL) {
val = v;
next = n;
}
};
// Очередь. Используется как представление стопки
struct Queue {
node *head;
Queue(node *h = NULL) {
head = h;
}
void push(bool v) { // Добавить элемент в очередь
head = new node(v, head);
}
bool pop() { // Изъять элемент из очереди
if(head != NULL && (head -> next) != NULL) {
node *i = head;
node *p = i;
while(i -> next != NULL) {
p = i;
i = i -> next;
}
bool v = i -> val;
p -> next = NULL;
delete i;
return v;
} else {
node *n = head;
bool v = head -> val;
head = head -> next;
delete n;
return v;
}
}
};
int main() {
int n; // Количество карточек в стопке
cin >> n;
Queue cards;
bool t = n % 2; // Цвет текущей карточки. Инициализируется цветом последней выкладываемой карточки
for(int i = 0; i < n - 1; i++) { // Собираем стопку, не добавляя верхнюю карточку
cards.push(t); // Добавляем текущую карточку
cards.push(cards.pop()); // Перекладываем карточку из-под стопки наверх
t = !t; // Меняем цвет текущей карточки
}
cards.push(1); // Добавляем белую карточку наверх
for(int i = 0; i < n; i++) // Выводим полученную стопку
cout << cards.pop();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi8vINCj0LfQtdC7LiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LIg0L7Rh9C10YDQtdC00LgKc3RydWN0IG5vZGUgewogICAgYm9vbCB2YWw7ICAgLy8g0JfQvdCw0YfQtdC90LjQtSDRg9C30LvQsAogICAgbm9kZSAqbmV4dDsgLy8g0KPQutCw0LfQsNGC0LXQu9GMINC90LAg0YHQu9C10LTRg9GO0YnQuNC5INGD0LfQtdC7CiAgICBub2RlKGludCB2LCBub2RlICpuID0gTlVMTCkgewogICAgICAgIHZhbCA9IHY7CiAgICAgICAgbmV4dCA9IG47CiAgICB9Cn07CiAKLy8g0J7Rh9C10YDQtdC00YwuINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQutCw0Log0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LUg0YHRgtC+0L/QutC4CnN0cnVjdCBRdWV1ZSB7CiAgICBub2RlICpoZWFkOwogICAgUXVldWUobm9kZSAqaCA9IE5VTEwpIHsKICAgICAgICBoZWFkID0gaDsKICAgIH0KICAgIHZvaWQgcHVzaChib29sIHYpIHsgLy8g0JTQvtCx0LDQstC40YLRjCDRjdC70LXQvNC10L3RgiDQsiDQvtGH0LXRgNC10LTRjAogICAgICAgIGhlYWQgPSBuZXcgbm9kZSh2LCBoZWFkKTsKICAgIH0KICAgIGJvb2wgcG9wKCkgeyAgICAvLyDQmNC30YrRj9GC0Ywg0Y3Qu9C10LzQtdC90YIg0LjQtyDQvtGH0LXRgNC10LTQuAogICAgICAgIGlmKGhlYWQgIT0gTlVMTCAmJiAoaGVhZCAtPiBuZXh0KSAhPSBOVUxMKSB7CiAgICAgICAgICAgIG5vZGUgKmkgPSBoZWFkOwogICAgICAgICAgICBub2RlICpwID0gaTsKICAgICAgICAgICAgd2hpbGUoaSAtPiBuZXh0ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgIHAgPSBpOwogICAgICAgICAgICAgICAgaSA9IGkgLT4gbmV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgICBib29sIHYgPSBpIC0+IHZhbDsKICAgICAgICAgICAgcCAtPiBuZXh0ID0gTlVMTDsKICAgICAgICAgICAgZGVsZXRlIGk7CiAgICAgICAgICAgIHJldHVybiB2OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5vZGUgKm4gPSBoZWFkOwogICAgICAgICAgICBib29sIHYgPSBoZWFkIC0+IHZhbDsKICAgICAgICAgICAgaGVhZCA9IGhlYWQgLT4gbmV4dDsKICAgICAgICAgICAgZGVsZXRlIG47CiAgICAgICAgICAgIHJldHVybiB2OwogICAgICAgIH0KICAgIH0KfTsKIAppbnQgbWFpbigpIHsKICAgIGludCBuOyAgLy8g0JrQvtC70LjRh9C10YHRgtCy0L4g0LrQsNGA0YLQvtGH0LXQuiDQsiDRgdGC0L7Qv9C60LUKICAgIGNpbiA+PiBuOwogICAgUXVldWUgY2FyZHM7CiAgICBib29sIHQgPSBuICUgMjsgLy8g0KbQstC10YIg0YLQtdC60YPRidC10Lkg0LrQsNGA0YLQvtGH0LrQuC4g0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgtGB0Y8g0YbQstC10YLQvtC8INC/0L7RgdC70LXQtNC90LXQuSDQstGL0LrQu9Cw0LTRi9Cy0LDQtdC80L7QuSDQutCw0YDRgtC+0YfQutC4CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgeyAvLyDQodC+0LHQuNGA0LDQtdC8INGB0YLQvtC/0LrRgywg0L3QtSDQtNC+0LHQsNCy0LvRj9GPINCy0LXRgNGF0L3RjtGOINC60LDRgNGC0L7Rh9C60YMKICAgICAgICBjYXJkcy5wdXNoKHQpOyAgLy8g0JTQvtCx0LDQstC70Y/QtdC8INGC0LXQutGD0YnRg9GOINC60LDRgNGC0L7Rh9C60YMKICAgICAgICBjYXJkcy5wdXNoKGNhcmRzLnBvcCgpKTsgICAgLy8g0J/QtdGA0LXQutC70LDQtNGL0LLQsNC10Lwg0LrQsNGA0YLQvtGH0LrRgyDQuNC3LdC/0L7QtCDRgdGC0L7Qv9C60Lgg0L3QsNCy0LXRgNGFCiAgICAgICAgdCA9ICF0OyAvLyDQnNC10L3Rj9C10Lwg0YbQstC10YIg0YLQtdC60YPRidC10Lkg0LrQsNGA0YLQvtGH0LrQuAogICAgfQogICAgY2FyZHMucHVzaCgxKTsgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQsdC10LvRg9GOINC60LDRgNGC0L7Rh9C60YMg0L3QsNCy0LXRgNGFCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSAgIC8vINCS0YvQstC+0LTQuNC8INC/0L7Qu9GD0YfQtdC90L3Rg9GOINGB0YLQvtC/0LrRgwogICAgICAgIGNvdXQgPDwgY2FyZHMucG9wKCk7CiAgICByZXR1cm4gMDsKfQ==