#include <stdio.h>
int main(void) {
int n, m;
int arr[n + 1], g;
arr[0] = 0;
for (int i = 1; i <= n; i++) {
arr[i] = arr[i - 1] + g;
}
int count = 0;
int subset_count = (1 << n); // 부분수열의 개수 (2의 n승)
for (int subset = 1; subset < subset_count; subset++) {
int sum = 0;
for (int i = 0; i < n; i++) {
// 부분수열에 해당하는 경우에만 합을 계산
if (subset & (1 << i)) {
sum += arr[i + 1] - arr[i];
}
}
if (sum == m) {
count++;
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgbiwgbTsKICAgIHNjYW5mKCIlZCAlZCIsICZuLCAmbSk7CiAgICAKICAgIGludCBhcnJbbiArIDFdLCBnOwogICAgYXJyWzBdID0gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIHNjYW5mKCIlZCIsICZnKTsKICAgICAgICBhcnJbaV0gPSBhcnJbaSAtIDFdICsgZzsKICAgIH0KICAgIAogICAgaW50IGNvdW50ID0gMDsKICAgIGludCBzdWJzZXRfY291bnQgPSAoMSA8PCBuKTsgLy8g67aA67aE7IiY7Je07J2YIOqwnOyImCAoMuydmCBu7Iq5KQogICAgZm9yIChpbnQgc3Vic2V0ID0gMTsgc3Vic2V0IDwgc3Vic2V0X2NvdW50OyBzdWJzZXQrKykgewogICAgICAgIGludCBzdW0gPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIC8vIOu2gOu2hOyImOyXtOyXkCDtlbTri7ntlZjripQg6rK97Jqw7JeQ66eMIO2VqeydhCDqs4TsgrAKICAgICAgICAgICAgaWYgKHN1YnNldCAmICgxIDw8IGkpKSB7CiAgICAgICAgICAgICAgICBzdW0gKz0gYXJyW2kgKyAxXSAtIGFycltpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc3VtID09IG0pIHsKICAgICAgICAgICAgY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHByaW50ZigiJWQiLCBjb3VudCk7CiAgICByZXR1cm4gMDsKfQo=