Codeforces Round 223 (Div. 1) |
---|
Закончено |
Сережа очень любит числовые последовательности. Поэтому он решил сделать себе еще одну. Для этого он действует по следующему алгоритму.
Сережа берет чистый листок бумаги. Далее он начинает выписывать последовательность в m этапов. Каждый раз он либо дописывает новое число в конец последовательности, либо берет l первых элементов текущей последовательности и дописывает их в конец c раз. Более формально, если обозначить текущую последовательность a1, a2, ..., an, то после применения описанной операции она превратится в a1, a2, ..., an[, a1, a2, ..., al] (блок, который выделен в квадратные скобки, нужно повторить c раз).
Прошел день. Сережа уже построил последовательность. Теперь он хочет знать, чему равны некоторые ее элементы? Помогите Сереже.
Первая строка содержит целое число m (1 ≤ m ≤ 105) — количество этапов для построения последовательности.
Следующие m строк содержат описание этапов в порядке их следования. Первое число в строке — это тип этапа (1 или 2). Тип 1 обозначает добавление одного числа в конец последовательности, в этом случае далее в строке идет целое число xi (1 ≤ xi ≤ 105) — число, которое нужно добавить. Тип 2 обозначает копирование префикса длины li в конец ci раз, в этом случае далее в строке идут два целых числа li, ci (1 ≤ li ≤ 105, 1 ≤ ci ≤ 104), li — длина префикса, ci — количество копирований. Гарантируется, что длина префикса li никогда не превышает текущей длины последовательности.
Следующая строка содержит целое число n (1 ≤ n ≤ 105) — количество элементов, которые интересуют Сережу. Следующая строка содержит номера интересующих Сережу элементов в полученной последовательности в строго возрастающем порядке. Гарантируется, что все числа строго больше нуля и не превосходят длины полученной последовательности. Считайте, что элементы итоговой последовательности пронумерованы, начиная от 1, от начала последовательности к концу.
Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-х битовых чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.
Выведите интересующие Сережу элементы в порядке, в котором их номера следуют во входных данных.
6
1 1
1 2
2 2 1
1 3
2 5 2
1 4
16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 1 2 3 1 2 1 2 3 1 2 1 2 3 4
Название |
---|