Миша и Дима — молодые перспективные учёные. Совместно со своими
коллегами по инновационному центру Спилково они каждый день совершают
невероятные открытия. Сейчас Миша с Димой изучают свойства
удивительной функции F, которая записывается следующим образом:
int F(int x, int n)
{
return (((x & ((1 << (n / 2)) - 1)) << ((n + 1) / 2)) | (x >> (n / 2)));
}
function F(x, n: integer): integer;
begin
F := (((x and ((1 shl (n div 2)) - 1)) shl ((n + 1) div 2)) or (x shr (n div 2)));
end;
Друзья хотят провести следующий численный эксперимент.
- В ряд выписываются все целые числа от 0 до 2n − 1.
- Каждое число x в этом ряду заменяется на F(x, n).
- Каждое получившееся на шаге 2 число записывается в виде бинарной
строки, состоящей ровно из n бит (если число содержит менее n бит,
слева дописываются ведущие нули, если более n бит — старшие биты
отбрасываются).
- Результатом является бинарная строка минимальной длины, содержащая все
строки, полученные на шаге 3, в качестве подстрок.
Если вы сможете провести такой эксперимент, быть может, вас тоже возьмут
работать в Спилково!
Исходные данные
В единственной строке записано целое число n (1 ≤ n ≤ 20).
Результат
Выведите искомую бинарную строку. Если существует
несколько оптимальных решений, можно вывести любое из них.
Пример
исходные данные | результат |
---|
1
| 10
|
Автор задачи: Илья Кучумов
Источник задачи: Уральская региональная командная олимпиада по программированию 2013