#include #define INF 2000000000 using namespace std; typedef long long ll; int read(){ int f = 1, x = 0; char c = getchar(); while(c < '0' || c > '9'){if(c == '-') f = -f; c = getchar();} while(c >= '0' && c <= '9')x = x * 10 + c - '0', c = getchar(); return f * x; } struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; bool isLeaf(TreeNode* root) { return root->left == NULL && root->right == NULL; } struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; vector ans; int V; void init(){ V = read(); } void solve(){ ans.clear(); int tt = 0, tmp = V; while (tmp > 0){ tt += tmp % 10, tmp /= 10; } int i; for (i = 1; i * i <= V; ++i){ if (V % i == 0){ if (tt % i == 0) ans.push_back(i); } } --i; if (i * i == V) --i; for (; i >= 1; --i){ if (V % i == 0){ if (tt % (V / i) == 0) ans.push_back(V / i); } } printf("%d\n", ans.size()); for (int i = 0; i < ans.size() - 1; ++i) printf("%d ", ans[i]); printf("%d\n", ans[ans.size() - 1]); } int main(){ int T = read(); while (T--){ init(); solve(); } return 0; }