#ifdef NACHIA #define _GLIBCXX_DEBUG #else #define NDEBUG #endif #include #include #include #include using i64 = long long; using u64 = unsigned long long; #define rep(i,n) for(i64 i=0; i void chmin(A& l, const A& r){ if(r < l) l = r; } template void chmax(A& l, const A& r){ if(l < r) l = r; } using namespace std; using i128 = __int128_t; vector A1, B1, A2; void changeAns(vector& l, vector r){ if(l.size() == 0) swap(l, r); if(r.size() == 0) return; if(l.size() > r.size()) swap(l, r); } void testcase(){ i64 X, Y, Z; cin >> X >> Z >> Y; if(X == 0 && Y == 0 && Z == 0){ cout << "3\n0 0 0\n"; return; } if(X == Y && Y == Z){ cout << "4\n" << X << " 0 " << X << " " << X << "\n"; return; } A1 = {1,0}; B1 = {0,1}; rep(f,2){ while(max(A1.back(), B1.back()) < INF){ A1.push_back(A1[A1.size() - 1] + A1[A1.size() - 2]); B1.push_back(B1[B1.size() - 1] + B1[B1.size() - 2]); } reverse(A1.begin(), A1.end()); reverse(B1.begin(), B1.end()); } A2 = {1,0,1,1,0,1}; rep(f,2){ while(A2.back() < INF){ A2.push_back(A2[A2.size() - 1] + A2[A2.size() - 2]); } reverse(A2.begin(), A2.end()); } bool sw = false; if(X == Y){ sw = true; swap(X, Z); } vector ans; rep(c,A2.size()) rep(b,c) rep(a,b){ if(A2[a] * Y != A2[b] * X) continue; if(A2[a] == 0 && A2[b] == 0) continue; i64 q = (A2[a] == 0) ? Y / A2[b] : X / A2[a]; if(A2[c] * q != Z) continue; vector f; for(i64 i=a; i<=c; i++) f.push_back(A2[i] * q); changeAns(ans, move(f)); } rep(c,A1.size()) rep(b,c) rep(a,b){ i128 x = X * B1[b] - Y * B1[a]; i128 y = A1[a] * Y - A1[b] * X; i128 d = A1[a] * B1[b] - A1[b] * B1[a]; if(d == 0) continue; if(x % d != 0) continue; if(y % d != 0) continue; x /= d; y /= d; if(Z != A1[c] * x + B1[c] * y) continue; vector f; for(i64 i=a; i<=c; i++) f.push_back(A1[i] * x + B1[i] * y); bool ok = true; for(auto g : f) if(g < 0) ok = false; if(ok) changeAns(ans, move(f)); } if(sw) reverse(ans.begin(), ans.end()); if(ans.size() == 0){ cout << "-1\n"; } else { cout << ans.size() << "\n"; rep(i,ans.size()){ if(i) cout << " "; cout << ans[i]; } cout << "\n"; } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); testcase(); return 0; }