#include using namespace std; typedef long long ll; int main(){ string S; cin >> S; int N = S.size(); int M = 0; int L = 0; for(int i = 0; i < N; i++){ M += (S[i] - '0'); L += (S[i] - '0') * (i + 1); } vector>dp(M + 1, vector(L + 1, 0)); dp[0][0] = 1; for(int i = 1; i <= N; i++){ vector>ndp(M + 1, vector(L + 1, 0)); for(int j = 0; j <= M; j++){ for(int k = 0; k <= L; k++){ ndp[j][k] += dp[j][k]; if(j + 1 <= M && k + i <= L){ ndp[j + 1][k + i] += dp[j][k]; } } } for(int j = 0; j <= M; j++){ for(int k = 0; k <= L; k++){ dp[j][k] = ndp[j][k]; } } } cout << dp[M][L] << endl; return 0; }