#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<(n);i++)
#define sz(x) int(x.size())
#define pb push_back
#define eb emplace_back
using ll=long long;
using P = pair<int,int>;
#define chmax(x,y) x = max(x,y)
#define chmin(x,y) x = min(x,y)
const ll MOD=1000000007;



int main() {
    int K,x,y;
    cin>>K>>x>>y;
    int X=abs(x);
    int Y=abs(y);
    if(K%2==0 && (X+Y)%2==1){cout<<-1<<endl;return 0;}
    int ansx=0,ansy=0;//今の座標(補正前)
    int cx,cy;//補正用の係数
    if(x==X){cx=1;}
    else{cx=-1;}
    if(y==Y){cy=1;}
    else{cy=-1;}
//cout<<cx<<" "<<cy<<endl;
    if(K%2==0){
        if(X+Y==K){
            cout<<1<<endl<<X*cx<<" "<<Y*cy<<endl;
            return 0;
        }
        else if(X+Y<K){
            cout<<2<<endl;
            if(X>=Y){
                cout<<(ansx+(X-Y)/2)*cx<<" "<<(ansy+K-(X-Y)/2)*cy<<endl;
                ansx+=(X-Y)/2;
                ansy+=K-(X-Y)/2;
                cout<<(ansx+(X+Y)/2)*cx<<" "<<(ansy+(X+Y)/2-K)*cy<<endl;
            }
            else{
                cout<<(ansx+K-(Y-X)/2)*cx<<" "<<(ansy+(Y-X)/2)*cy<<endl;
                ansx+=K-(Y-X)/2;
                ansy+=(Y-X)/2;
                cout<<(ansx+(X+Y)/2-K)*cx<<" "<<(ansy+(X+Y)/2)*cy<<endl;
            }
        }
        else{
            if((X+Y)%K==0){
                cout<<(X+Y)/K<<endl;
                int count=(X+Y)/K;
                rep(i,count){
                    if(X>=K){cout<<(ansx+K)*cx<<" "<<0<<endl;ansx+=K;X-=K;}
                    else{cout<<(ansx+X)*cx<<" "<<(ansy+(K-X))*cy<<endl;ansx+=X;ansy+=(K-X);Y-=(K-X);X=0;}
                }
                return 0;
            }
            int p=(X+Y)/K-1;
            cout<<p+2<<endl;
            rep(i,p){
                if(X>=K){cout<<(ansx+K)*cx<<" "<<0<<endl;ansx+=K;X-=K;}
                else{cout<<(ansx+X)*cx<<" "<<(ansy+(K-X))*cy<<endl;ansx+=X;ansy+=(K-X);Y-=(K-X);X=0;}
//cout<<"X="<<X<<" "<<"Y="<<Y<<endl;
            }//残り二回でなんとかする

            if(X>=Y){
                cout<<(ansx+(X-Y)/2)*cx<<" "<<(ansy+K-(X-Y)/2)*cy<<endl;
                ansx+=(X-Y)/2;
                ansy+=K-(X-Y)/2;
                cout<<(ansx+(X+Y)/2)*cx<<" "<<(ansy+(X+Y)/2-K)*cy<<endl;
            }
            else{
                cout<<(ansx+K-(Y-X)/2)*cx<<" "<<(ansy+(Y-X)/2)*cy<<endl;
                ansx+=K-(Y-X)/2;
                ansy+=(Y-X)/2;
                cout<<(ansx+(X+Y)/2-K)*cx<<" "<<(ansy+(X+Y)/2)*cy<<endl;
            }
        }
    }
    else{
        if(X+Y==K){
            cout<<1<<endl<<X*cx<<" "<<Y*cy<<endl;
            return 0;
        }
        else if(X+Y<K && (X+Y)%2==0){
            cout<<2<<endl;
            if(X>=Y){
                cout<<(ansx+(X-Y)/2)*cx<<" "<<(ansy+K-(X-Y)/2)*cy<<endl;
                ansx+=(X-Y)/2;
                ansy+=K-(X-Y)/2;
                cout<<(ansx+(X+Y)/2)*cx<<" "<<(ansy+(X+Y)/2-K)*cy<<endl;
            }
            else{
                cout<<(ansx+K-(Y-X)/2)*cx<<" "<<(ansy+(Y-X)/2)*cy<<endl;
                ansx+=K-(Y-X)/2;
                ansy+=(Y-X)/2;
                cout<<(ansx+(X+Y)/2-K)*cx<<" "<<(ansy+(X+Y)/2)*cy<<endl;
            }
        }
        else if(X+Y<K && (X+Y)%2==1){
            cout<<3<<endl;
            if(X%2==0){
                cout<<X*cx<<" "<<(K-X)*cy<<endl;
                ansx+=X;
                ansy+=K-X;
                //Y-=K-X;
                //X=0;
                cout<<(ansx+(K+X+Y)/2)*cx<<" "<<(ansy-(K-X-Y)/2)*cy<<endl;
                ansx+=(K+X+Y)/2;
                ansy-=(K-X-Y)/2;
                cout<<(ansx-(K+X+Y)/2)*cx<<" "<<(ansy-(K-X-Y)/2)*cy<<endl;
            }
            else{
                cout<<(K-Y)*cx<<" "<<Y*cy<<endl;
                ansx+=K-Y;
                ansy+=Y;
                //X-=K-Y;
                //Y=0;
                cout<<(ansx-(K-X-Y)/2)*cx<<" "<<(ansy+(K+X+Y)/2)*cy<<endl;
                ansx-=(K-X-Y)/2;
                ansy+=(K+X+Y)/2;
                cout<<(ansx-(K-X-Y)/2)*cx<<" "<<(ansy-(K+X+Y)/2)*cy<<endl;
            }
        }
        else{
            if((X+Y)%K==0){
                cout<<(X+Y)/K<<endl;
                int count=(X+Y)/K;
                rep(i,count){
                    if(X>=K){cout<<(ansx+K)*cx<<" "<<0<<endl;ansx+=K;X-=K;}
                    else{cout<<(ansx+X)*cx<<" "<<(ansy+(K-X))*cy<<endl;ansx+=X;ansy+=(K-X);Y-=(K-X);X=0;}
                }
                return 0;
            }
            int p=(X+Y)/K-1;
        //cout<<p<<endl;
            if((X+Y-K*p)%2==0){cout<<p+2<<endl;}
            else{cout<<p+3<<endl;}
            rep(i,p){
                if(X>=K){cout<<(ansx+K)*cx<<" "<<0<<endl;ansx+=K;X-=K;}
                else{cout<<(ansx+X)*cx<<" "<<(ansy+(K-X))*cy<<endl;ansx+=X;ansy+=(K-X);Y-=(K-X);X=0;}
            }
            if((X+Y)%2==0){
                if(X>=Y){
                    cout<<(ansx+(X-Y)/2)*cx<<" "<<(ansy+K-(X-Y)/2)*cy<<endl;
                    ansx+=(X-Y)/2;
                    ansy+=K-(X-Y)/2;
                    cout<<(ansx+(X+Y)/2)*cx<<" "<<(ansy+(X+Y)/2-K)*cy<<endl;
                }
                else{
                    cout<<(ansx+K-(Y-X)/2)*cx<<" "<<(ansy+(Y-X)/2)*cy<<endl;
                    ansx+=K-(Y-X)/2;
                    ansy+=(Y-X)/2;
                    cout<<(ansx+(X+Y)/2-K)*cx<<" "<<(ansy+(X+Y)/2)*cy<<endl;
                }
            }
            else{
                if(X>=K){
                    cout<<(ansx+K)*cx<<" "<<(ansy)*cy<<endl;
                    ansx+=K;
                    X-=K;
                }
                else{
                    cout<<(ansx+X)*cx<<" "<<(ansy+K-X)*cy<<endl;
                    ansx+=X;
                    ansy+=K-X;
                    Y-=K-X;
                    X=0;
                }
                if(X>=Y){
                    cout<<(ansx+(X-Y)/2)*cx<<" "<<(ansy+K-(X-Y)/2)*cy<<endl;
                    ansx+=(X-Y)/2;
                    ansy+=K-(X-Y)/2;
                    cout<<(ansx+(X+Y)/2)*cx<<" "<<(ansy+(X+Y)/2-K)*cy<<endl;
                }
                else{
                    cout<<(ansx+K-(Y-X)/2)*cx<<" "<<(ansy+(Y-X)/2)*cy<<endl;
                    ansx+=K-(Y-X)/2;
                    ansy+=(Y-X)/2;
                    cout<<(ansx+(X+Y)/2-K)*cx<<" "<<(ansy+(X+Y)/2)*cy<<endl;
                }
            }
        }
    }
    return 0;
}

Measured memory_bytes: 2304