#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
    ll k,x,y;
    cin>>k>>x>>y;
    if((abs(x)+abs(y))%2==1&&k%2==0){
        cout<<-1<<endl;
        return 0;
    }
    if(k==abs(x)+abs(y)){
        cout<<1<<endl;
        cout<<x<<" "<<y<<endl;
        return 0;
    }
    if(k>abs(x)+abs(y)){
        if((abs(x)+abs(y))%2==1){
            ll len=(3*k+abs(x)+abs(y))/2-abs(x)-k;
            ll num=k;
            cout<<3<<endl;
            if(x>0) num*=-1;
            if(y<0) len*=-1;
            cout<<num<<" "<<0<<endl;
            if(num>0) cout<<abs(len)<<" "<<len<<endl;
            else cout<<-abs(len)<<" "<<len<<endl;
            cout<<x<<" "<<y<<endl;
            return 0;
        }
        else{
            cout<<2<<endl;
            ll len=(2*k+abs(x)+abs(y))/2-abs(x)-abs(y);
            ll num=k-len;
            if(abs(x)>abs(y)){
                if(y>0) len*=-1;
                if(x<0) num*=-1;
                cout<<num<<" "<<len<<endl;
            }
            else{
                if(x>0) len*=-1;
                if(y<0) num*=-1;
                cout<<len<<" "<<num<<endl;
            }
            cout<<x<<" "<<y<<endl;
            return 0;
        }
    }
    else{
        ll t=(abs(x)+abs(y)+k-1)/k;
        if((abs(x)+abs(y))%2==1){
            if(t%2==0) t++;
        }
        else{
            if(k%2==1){
                if(t%2==1) t++;
            }
        }
        if(abs(x)>=abs(y)){
            cout<<t<<endl;
            ll len=(t*k+abs(x)+abs(y))/2-abs(x);
            if(y<0) len*=-1;
            ll now=0;
            while(abs(now)+k<=abs(len)){
                if(len>0&&now+k<=len){
                    now+=k;
                    printf("%lld %lld\n",0,now);
                }
                else if(len<0&&now-k>=len){
                    now-=k;
                    printf("%lld %lld\n",0,now);
                }
                if(x==0&&now==y) return 0;
            }
            now=k-(abs(len)-abs(now));
            if(x<0) now*=-1;
            printf("%lld %lld\n",now,len);
            if(x==now&&len==y) return 0;
            while(abs(now)+k<=abs(x)){
                if(x>0&&now+k<=x){
                    now+=k;
                    printf("%lld %lld\n",now,len);
                }
                else if(x<0&&now-k>=x){
                    now-=k;
                    printf("%lld %lld\n",now,len);
                }
                if(x==now&&len==y) return 0;
            }
            now=abs(len)-(k-(abs(x)-abs(now)));
            if(y<0) now*=-1;
            printf("%lld %lld\n",x,now);
            if(x==x&&now==y) return 0;
            while(now!=y){
                if(y>0&&now-k>=y){
                    now-=k;
                    printf("%lld %lld\n",x,now);
                }
                else if(y<0&&now+k<=y){
                    now+=k;
                    printf("%lld %lld\n",x,now);
                }
                if(x==x&&now==y) return 0;
            }
        }
        else{
            cout<<t<<endl;
            ll len=(t*k+abs(x)+abs(y))/2-abs(y);
            if(x<0) len*=-1;
            ll now=0;
            while(abs(now)+k<=abs(len)){
                if(len>0&&now+k<=len){
                    now+=k;
                    printf("%lld %lld\n",now,0);
                }
                else if(len<0&&now-k>=len){
                    now-=k;
                    printf("%lld %lld\n",now,0);
                }
                if(x==now&&0==y) return 0;
            }
            now=k-(abs(len)-abs(now));
            if(y<0) now*=-1;
            printf("%lld %lld\n",len,now);
            if(x==len&&now==y) return 0;
            while(abs(now)+k<=abs(y)){
                if(y>0&&now+k<=y){
                    now+=k;
                    printf("%lld %lld\n",len,now);
                }
                else if(y<0&&now-k>=y){
                    now-=k;
                    printf("%lld %lld\n",len,now);
                }
                if(x==len&&now==y) return 0;
            }
            now=abs(len)-(k-(abs(y)-abs(now)));
            if(x<0) now*=-1;
            printf("%lld %lld\n",now,y);
            if(x==now&&y==y) return 0;
            while(now!=x){
                if(x>0&&now-k>=x){
                    now-=k;
                    printf("%lld %lld\n",now,y);
                }
                else if(x<0&&now+k<=x){
                    now+=k;
                    printf("%lld %lld\n",now,y);
                }
                if(x==now&&y==y) return 0;
            }
        }
        return 0;
    }
}

Measured memory_bytes: 2304