아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Миллион алых роз

시간 제한1초메모리 제한1024 MB

요약
주어진 수열의 서로 다른 비어 있지 않은 부분수열의 개수를 1 000 000 007로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 조합론, 배열
정답자
아직 제출이 없습니다

문제

Восьмое марта только началось, а перед входом в цветочный магазин «Аделина» уже выстроилась огромная очередь желающих приобрести букеты красивейших свежих алых роз. Хозяин магазина Александр понимал, что день сегодня предстоит нелегкий. Поэтому он решил предварительно узнать у каждого из ожидающих покупателей, сколько всего роз тот хотел бы приобрести. Полученные числа Александр аккуратно выписал на листок и понял, что в одиночку ему не справиться.

Чтобы ускорить процесс формирования букетов, хозяин магазина позвал на помощь своего коллегу Михаила. Александр показал ему полученный только что список и предложил выписать подпоследовательность размеров букетов, формированием которых Михаил готов заняться.

Михаила не интересует оптимальное распределение работы. Не интересуют его также максимальный, минимальный и даже средний размеры формируемых им букетов. Все, что он хочет знать, — количество различных непустых подпоследовательностей в списке Александра по модулю 109 + 7.

입력

В первой строке вводится целое число N — количество ожидающих покупателей (1 ⩽ N ⩽ ⩽ 1 000 000). Вторая строка содержит N натуральных чисел, i-е из которых описывает, сколько роз желает купить i-й человек в очереди (1 ⩽ ai ⩽ 1 000 000).

출력

Выведите ответ на вопрос, терзающий Михаила, — количество различных подпоследовательностей в составленном Александром списке по модулю 1 000 000 007 (109 + 7).

힌트

Подпоследовательностью {xnk} называется числовая последовательность, которая составлена из членов последовательности {xn} и в которой порядок следования ее элементов совпадает с их порядком следования в исходной последовательности {xn}.

В тесте из условия Михаил может найти следующие 13 различных подпоследовательностей: {1}, {1, 1}, {1, 1, 3}, {1, 2}, {1, 2, 1}, {1, 2, 1, 3}, {1, 2, 3}, {1, 3}, {2}, {2, 1}, {2, 1, 3}, {2, 3}, {3}.

예제1

  1. 예제 1

    입력
    4
    1 2 1 3
    
    예상 출력
    13