BÒ BIỂU TÌNH

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Người đăng:
Nguồn bài:
Ams2
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python

Những con bò của nông dân hoangduong đứng xếp thành một hàng để biểu tình. Các con bò được đánh số từ ~1~ đến ~n~ theo thứ tự và con bò thứ ~i~ giơ một tấm bảng ghi một số nguyên ~a_i~ thể hiện mức độ ủng hộ với hoangduong (số càng lớn thì mức độ ủng hộ càng cao, số âm thể hiện sự phản đối của con bò đối với các chính sách của hoangduong). Mức độ ủng hộ của một nhóm các con bò liên tiếp được đo bằng tổng mức độ ủng hộ của từng con bò trong nhóm.

Để ngăn chặn sự chống đối, hoangduong muốn chia các con bò đang đứng thành từng nhóm gồm các con bò liên tiếp sao cho mức độ ủng hộ trong mỗi nhóm đều là số không âm.

Hãy tính xem có bao nhiêu cách khác nhau để hoangduong có thể làm như vậy.

Ví dụ, với ~n = 4~ và các con bò có mức độ ủng hộ lần lượt là ~2, 3, -3, 1~ thì khi đó John có thể có 4 cách chia như sau:

Cách 1: ~1~ nhóm gồm (~2, 3, -3, 1~)

Cách 2: ~2~ nhóm gồm (~2, 3, -3~), (~1~)

Cách 3: ~2~ nhóm gồm (~2~), (~3, -3, 1~)

Cách 4: ~3~ nhóm gồm (~2~), (~3, -3~), (~1~)

INPUT

Dòng đầu tiên chứa số nguyên dương ~n~ (~1 \le n \le 10^5~)

Dòng tiếp theo ghi ~n~ số nguyên ~a_1, a_2, ..., a_n~ hai số liên tiếp được ghi cách nhau một dấu cách (~|A_i| \le 10000~)

OUTPUT

Một số nguyên duy nhất là kết quả thu được sau khi chia lấy dư cho ~10^9 + 9~

SAMPLE INPUT

4
2 3 -3 1

SAMPLE OUTPUT

4