#166. Dash的子序列

Dash的子序列

题目描述

Dash拿到了一个数组,数组的元素的绝对值不超过 1,他想取一个非空子序列(在原数组中可以不连续),并计算该子序列的乘积。 Dash想知道,子序列乘积为 -1、0、1 的方案数分别有多少种?

输入描述

第一行输入一个正整数nn,代表数组的大小。 第二行输入nn个整数aia_i,代表数组的元素。 1n1051\leq n \leq 10^5 1ai1-1 \leq a_i \leq 1

输出描述

三个整数,分别代表子序列乘积为负数、0、正数的方案数。由于答案可能过大,请对109+710^9+7取模。

样例

输入

4
-1 0 -1 1

输出

4 8 3

说明

长度为 1 的子序列共有 4 个,乘积为 -1 的有 2 个,乘积为 0 的有 1 个,乘积为 1 的有 1 个。
长度为 2 的子序列共有 6 个,乘积为 -1 的有 2 个,乘积为 0 的有 3 个,乘积为 1 的有 1 个。
长度为 3 的子序列共有 4 个,乘积为 -1 的有 0 个,乘积为 0 的有 3 个,乘积为 1 的有 1 个。
长度为 4 的子序列只有 1 个,乘积为 0。