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

int X, Y;
int k;

void next(int &x, int &y, int &C){
    if (x == X && y == Y) return;
    if (X >= 0 && Y >= 0){
        if (x == X) y += k;
        else if (y == - C){
            x += k;
            if (x > X){
                y += x - X;
                x = X;
            }
        }
        else if (x == 0){
            y -= k;
            if (y < - C){
                x += abs(y) - C;
                y = - C;
            }
        }
    }
    else if (X >= 0 && Y < 0){
        if (x == X) y -= k;
        else if (y == C){
            x += k;
            if (x > X){
                y -= x - X;
                x = X;
            }
        }
        else if (x == 0){
            y += k;
            if (y > C){
                x += y - C;
                y = C;
            }
        }
    }
    else if (X < 0 && Y >= 0){
        if (x == X) y += k;
        else if (y == - C){
            x -= k;
            if (x < X){
                y += abs(x) - abs(X);
                x = X;
            }
        }
        else if (x == 0){
            y -= k;
            if (y < - C){
                x -= abs(y) - C;
                y = - C;
            }
        }
    }
    else {
        if (x == X) y -= k;
        else if (y == C){
            x -= k;
            if (x < X){
                y -= abs(x) - abs(X);
                x = X;
            }
        }
        else if (x == 0){
            y += k;
            if (y > C){
                x -= y - C;
                y = C;
            }
        }
    }
}

void special_next(int &x, int &y, bool flag){
    if (X >= 0 && Y >= 0){
        if (flag) cout << - (k - x) << " " << x << endl;
        else cout << x << " " << - (k - x) << endl;
        if (flag) cout << - (k - abs(x) - abs(y)) / 2 << " " << (k + 3 * x - y) / 2 << endl;
        else cout << (k + 3 * x - y) / 2 << " " << - (k - abs(x) - abs(y)) / 2 << endl;
        if (flag) cout << Y << " " << X << endl;
        else cout << X << " " << Y << endl;
    }
    else if (X >= 0 && Y < 0){
        if (flag) cout << (k - x) << " " << x << endl;
        else cout << x << " " << (k - x) << endl;
        if (flag) cout << (k - abs(x) - abs(y)) / 2 << " " << (k + 3 * x + y) / 2 << endl;
        else cout << (k + 3 * x + y) / 2 << " " << (k - abs(x) - abs(y)) / 2 << endl;
        if (flag) cout << Y << " " << X << endl;
        else cout << X << " " << Y << endl;
    }
    else if (X < 0 && Y >= 0){
        if (flag) cout << - (k + x) << " " << x << endl;
        else cout << x << " " << - (k + x) << endl;
        if (flag) cout << - (k - abs(x) - abs(y)) / 2 << " " << - (k - 3 * x - y) / 2 << endl;
        else cout << - (k - 3 * x - y) / 2 << " " << - (k - abs(x) - abs(y)) / 2 << endl;
        if (flag) cout << Y << " " << X << endl;
        else cout << X << " " << Y << endl;
    }
    else {
        if (flag) cout << (k + x) << " " << x << endl;
        else cout << x << " " << (k + x) << endl;
        if (flag) cout << (k - abs(x) - abs(y)) / 2 << " " << - (k - 3 * x + y) / 2 << endl;
        else cout << - (k - 3 * x + y) / 2 << " " << (k - abs(x) - abs(y)) / 2 << endl;
        if (flag) cout << Y << " " << X << endl;
        else cout << X << " " << Y << endl;
    }
}

int main(){
    cin >> k;
    cin >> X >> Y;
    bool flag = false;
    if (abs(X) < abs(Y)){
        swap(X, Y);
        flag = true;
    }
    int c = (k - (abs(X) + abs(Y)) % k) % k;
    if (abs(X) + abs(Y) < k) c += k;
    if (c % 2 && ! (k % 2)){
        cout << - 1 << endl;
        exit(0);
    }
    int C;
    if (c % 2) C = (c + k) / 2;
    else C = c / 2;
    int num = (abs(X) + abs(Y) + C * 2) / k;
    int x, y;
    x = 0; y = 0;
    if ((abs(X) + abs(Y)) % 2 && abs(X) + abs(Y) < k){
        cout << 3 << endl;
        special_next(X, Y, flag);
        exit(0);
    }
    cout << num << endl;
    for (int i = 0; i < num; i++){
        next(x, y, C);
        if (flag) cout << y << " " << x << endl;
        else cout << x << " " << y << endl;
    }
}

Measured memory_bytes: 2304