#include <iostream>
#include <vector>
using namespace std;

int findWays(int index, int currentVolume, const vector<int>& volumes, int n) {
    // 如果当前总体积已经达到40,找到一种方法
    if (currentVolume == 40) {
        return 1;
    }
    // 如果当前总体积超过40或者已经考虑完所有物品,结束当前路径
    if (currentVolume > 40 || index == n) {
        return 0;
    }
    // 尝试两种情况:选择当前物品和不选择当前物品,然后返回总的方法数
    return findWays(index + 1, currentVolume + volumes[index], volumes,
                    n) +    // 选当前物品
           findWays(index + 1, currentVolume, volumes,
                    n);                                   // 不选当前物品
}

int main() {
    int n;
    cin >> n;
    vector<int> volumes(n);
    for (int i = 0; i < n; ++i) {
        cin >> volumes[i];
    }
    cout << findWays(0, 0, volumes, n) << endl;

}
// 64 位输出请用 printf("%lld")

可能会存在爆内存的问题