Language: C++

#include <bits/stdc++.h>
using namespace std;

#define INF_LL (int64)1e18
#define INF (int32)1e9
#define REP(i, n) for(int64 i = 0;i < (n);i++)
#define FOR(i, a, b) for(int64 i = (a);i < (b);i++)
#define all(x) x.begin(),x.end()
#define fs first
#define sc second

using int32 = int_fast32_t;
using uint32 = uint_fast32_t;
using int64 = int_fast64_t;
using uint64 = uint_fast64_t;
using PII = pair<int32, int32>;
using PLL = pair<int64, int64>;

const double eps = 1e-10;

template<typename A, typename B>inline void chmin(A &a, B b){if(a > b) a = b;}
template<typename A, typename B>inline void chmax(A &a, B b){if(a < b) a = b;}

template<typename T>
vector<T> make_v(size_t a){return vector<T>(a);}

template<typename T,typename... Ts>
auto make_v(size_t a,Ts... ts){
  return vector<decltype(make_v<T>(ts...))>(a,make_v<T>(ts...));
}

template<typename T,typename U,typename... V>
typename enable_if<is_same<T, U>::value!=0>::type
fill_v(U &u,const V... v){u=U(v...);}

template<typename T,typename U,typename... V>
typename enable_if<is_same<T, U>::value==0>::type
fill_v(U &u,const V... v){
  for(auto &e:u) fill_v<T>(e,v...);
}

int main(void){
	cin.tie(0);
	ios::sync_with_stdio(false);

	int64 X, Y, K;
    cin >> K >> X >> Y;
    bool swapped = 0;
    int64 sgnX = 1, sgnY = 1;
    if (X < 0) { sgnX = -1; X *= -1; }
    if (Y < 0) { sgnY = -1; Y *= -1; }
    if (X > Y) { swapped = 1; swap(X, Y); };
    if ((X+Y) %2 == 1 && K%2 == 0) {
        cout << -1 << endl;
        return 0;
    }
    vector<PLL> res;
    int64 n = ((X+Y+K-1)/K);
    if (n*K % 2 != (X+Y)%2) n++;
    assert(n != 2);
    int64 a = (n*K-X-Y)/2;
    if (a+Y >= K || X + Y >= K) {
        PLL now(0, 0);
        while (a+X >= now.fs+K) {
//            cout << "push1" << endl;
            now.fs += K; res.push_back(now);
        }
//        cout << "push2" << endl;
        now.sc += K-(a+X-now.fs); now.fs = a+X; res.push_back(now);
        while (now.sc+K <= Y) {
//            cout << "push3" << endl;
            now.sc += K; res.push_back(now);
        }
        if (now.sc != Y) {
//            cout << "push4" << endl;
            now.fs -= K - (Y - now.sc);
            now.sc = Y;
            res.push_back(now);
        }
        while (now.fs > X) {
            now.fs -= K; res.push_back(now);
//            cout << "push5" << endl;
        }
    } else {
            a = 1;
            int64 b = (3*K-X-Y-2)/2;
            res.push_back(PLL(X, -K+X));
            res.push_back(PLL(X+(K+X-Y)/2, (K-X+Y)/2-K+X));
            res.push_back(PLL(X, Y));
        }
    }
    cout << res.size() << endl;
    REP(i, res.size()) {
        if (swapped) swap(res[i].fs, res[i].sc);
        cout << res[i].fs * sgnX << " " << res[i].sc * sgnY << endl;
    }
}


Compiler output:
a.cc:92:5: error: 'cout' does not name a type
   92 |     cout << res.size() << endl;
      |     ^~~~
a.cc:6:19: error: expected unqualified-id before 'for'
    6 | #define REP(i, n) for(int64 i = 0;i < (n);i++)
      |                   ^~~
a.cc:93:5: note: in expansion of macro 'REP'
   93 |     REP(i, res.size()) {
      |     ^~~
a.cc:93:9: error: 'i' does not name a type
   93 |     REP(i, res.size()) {
      |         ^
a.cc:6:35: note: in definition of macro 'REP'
    6 | #define REP(i, n) for(int64 i = 0;i < (n);i++)
      |                                   ^
a.cc:93:9: error: 'i' does not name a type
   93 |     REP(i, res.size()) {
      |         ^
a.cc:6:43: note: in definition of macro 'REP'
    6 | #define REP(i, n) for(int64 i = 0;i < (n);i++)
      |                                           ^
a.cc:97:1: error: expected declaration before '}' token
   97 | }
      | ^