#include "biscuits.h"
using namespace std;
typedef long long ll;
typedef vector<ll> vll;
ll ans = 0;
void backtrack(int ind, ll x, vll &a, vll &max_after) {
if (ind == a.size()-1 && max(a[ind], max_after[ind]) < x) return;
if (a[ind] >= x) {
++ans;
// i must be x
ll ad = (a[ind]-x)/2;
if (a.size() == ind+1) a.push_back(0);
a[ind+1] += ad;
backtrack(ind+1, x, a, max_after);
a[ind+1] -= ad;
if (a.size() == ind+2 && !a[ind+1]) a.pop_back();
}
if (a.size() == ind+1) a.push_back(0);
a[ind+1] += a[ind]/2;
backtrack(ind+1, x, a, max_after);
a[ind+1] -= a[ind]/2;
if (a.size() == ind+2 && !a[ind+1]) a.pop_back();
}
ll count_tastiness(ll x, vll a) {
while (!a.back()) a.pop_back();
if (a.empty()) return 1;
ans = 0;
vll max_after(62);
for (int i = a.size()-1; i >= 0; --i) max_after[i] = max(max_after[i+1], a[i]);
backtrack(0, x, a, max_after);
return ans + 1;
}