#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
using ll = long long;
#define debug(x) #x << " = " << x << '\n'
int main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
#endif
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int n;
std::cin >> n;
std::vector<int> divs;
for (int d = 1; d * d <= n; d++) {
if (n % d == 0) {
divs.push_back(d);
if (d * d != n) {
divs.push_back(n / d);
}
}
}
std::sort(divs.begin(), divs.end());
int sz = (int) divs.size();
std::vector<std::vector<int>> sums(sz);
sums[0].push_back(0);
for (int i = 1; i < sz; i++) {
for (int j = 0; j < i; j++) {
if (divs[i] % divs[j] == 0) {
// sums[i] U= sums[j] + divs[i] / divs[j] - 1
for (int k : sums[j]) {
sums[i].push_back(k + divs[i] / divs[j] - 1);
}
}
}
std::sort(sums[i].begin(), sums[i].end());
sums[i].erase(std::unique(sums[i].begin(), sums[i].end()), sums[i].end());
}
std::cout << sums.back().size() << '\n';
for (int x : sums.back()) {
std::cout << x << ' ';
}
return 0;
}
// lol aparent o aveam deja bagata
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |