def is_impossible(flag): if flag: print(-1);exit() A, B, C, D = map(int, input().split()) waterway = [] if A == B == C: N = A for i in range(N): waterway.append((i, (i + 1) % N)) else: tmp = 2 for _ in range(A - C - 1): waterway.append((0, tmp)) tmp += 1 for _ in range(B - C - 1): waterway.append((1, tmp)) tmp += 1 if C: if A == C: join = 0 waterway.append((1, 0)) elif B == C: join = 1 waterway.append((0, 1)) else: join = tmp waterway.append((0, join)) waterway.append((1, join)) tmp += 1 for _ in range(C - 1): waterway.append((join, tmp)) tmp += 1 N = tmp is_impossible(N < 2) M = len(waterway) is_impossible(M > D) print(N, M) for w in waterway: print(*w)