#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include constexpr int MOD{1'000'000'007}; constexpr int MOD2{998'244'353}; constexpr int INF{1'000'000'000}; //1e9 constexpr int NIL{-1}; constexpr long long LINF{1'000'000'000'000'000'000}; // 1e18 constexpr long double EPS{1E-10L}; using namespace std::literals; template bool chmax(T &a, const S &b){ if(a < b){a = b; return true;} return false; } template bool chmin(T &a, const S &b){ if(b < a){a = b; return true;} return false; } template bool inside(T x, T lx, T rx){ //semi-open return (std::ranges::clamp(x, lx, rx-1) == x); } template bool inside(T x, T y, T lx, T rx, T ly, T ry){ return inside(x, lx, rx) && inside(y, ly, ry); } template void print_contariner(Container &c, std::string sep = " "s, std::string end = "\n"s){ for(int i{int(std::size(c))}; auto e: c) std::cout << e << (--i ? sep : end); } int main(){ long long S; std::cin >> S; std::vector ans; while(S){ auto a{(long long)std::sqrt(1.L * S)}; for(int d{7}; d > -8; --d){ auto b{a + d}; if(b * b <= S){ S -= b * b; ans.emplace_back(b*b); break; } } } std::cout << std::size(ans) << '\n'; print_contariner(ans); return 0; }