Эта задача может быть решена методом динамического программирования. Вычислим значение $$$dp[i][j]$$$ — количество последовательностей длины $$$i$$$, заканчивающихся на символ $$$j$$$, и соответствующих первым $$$i$$$ числам из подсказки. Понятно, что $$$dp[1][a_1] = 1$$$, а все остальные $$$dp[1][i] = 0$$$. Для того, чтобы посчитать значение $$$dp[i][j]$$$, нужно сложить $$$dp[i - 1][j - a_i]$$$ и $$$dp[i - 1][j + a_i]$$$ (каждое из значений прибавляется только в том случае, если существует соответствующее состояние).