#include using namespace std; typedef long long ll; typedef vector vi; typedef vector vl; typedef pair pii; typedef pair pll; typedef int _loop_int; #define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i) #define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i) #define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i) #define DEBUG(x) cout<<#x<<": "< P; int main(){ int a,b,c,d; cin>>a>>b>>c>>d; int n = a+b-c; vector es; if(a==1 && b==1 && c==1){ puts("-1"); return 0; } if(a==c && b==c){ es.push_back(pii(0,1)); es.push_back(pii(1,0)); FOR(i,1,n-1)es.push_back(pii(i,i+1)); }else if(a==c){ int it = 2; es.push_back(pii(1,0)); REP(i,a-1)es.push_back(pii(0,it++)); while(it0){ es.push_back(pii(0,it)); es.push_back(pii(1,it)); REP(i,c-1){ es.push_back(pii(it,it+1)); it++; } it++; } a -= c; b -= c; REP(i,a-1)es.push_back(pii(0,it++)); REP(i,b-1)es.push_back(pii(1,it++)); } if(es.size()>d){ puts("-1"); return 0; } printf("%d %d\n",n,(int)es.size()); REP(i,es.size()){ printf("%d %d\n",es[i].first, es[i].second); } return 0; }