#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef double db; #define _Zero(a) memset(a,0,sizeof(a)) #define _Neg1(a) memset(a,-1,sizeof(a)) #define _Inf(a) memset(a,0x3f,sizeof(a)) #define _NegInf(a) memset(a,0xcf,sizeof(a)) #define _Rep(i,a,b) for(int (i)=(a);(i)<=(b);i++) #define _Dep(i,a,b) for(int (i)=(a);(i)>=(b);i--) #define _Out(a) cerr<<(#a)<<" = "<<(a)<void test(T x,Args...args){cerr<>1)%MOD : qpow(a*a%MOD,b>>1))%MOD :1; } ll qpow(ll a, ll b, ll c) {return b?((b&1)?a*qpow(a*a%c,b>>1)%c : qpow(a*a%c,b>>1)) % c: 1; } ll gcd(ll a, ll b){return b?gcd(b,a% b): a; } int sign(db x) { return x<-EPS ? -1: x>EPS; } int dbcmp(db l, db r) { return sign(l - r); } vector ans; int main() { int T; scanf("%d",&T); while(T--) { int n;ans.clear(); scanf("%d",&n); int tmp=n,tot=0; while(tmp) { tot+=tmp%10; tmp/=10; } int cnt=0; for(int i=1;i<=tot;i++) { if(tot%i==0&&n%i==0) { ans.push_back(i); cnt++; } } printf("%d\n",cnt); for(int i=0;i