import sys
r1, r2 = map(int, input().strip().split())
if r1 == 1 or r2 == 1:
print(-1)
sys.exit(0)
c1, c2 = map(int, input().strip().split())
if c1 == 1 or c2 == 1:
print(-1)
sys.exit(0)
d1, d2 = map(int, input().strip().split())
if d1 == 1 or d2 == 1:
print(-1)
sys.exit(0)
if r1 == r2 == c1 == c2 == d1 == d2:
print(-1)
sys.exit(0)
x, a, b, c = 0, 0, 0, 0
for i in range(1, 10):
x = i
a = r1 - x
b = c1 - x
c = d1 - x
if x == b or x == a or x == c or a == b or c == b or c == a:
continue
if 1 > a or a > 9:
continue
if 1 > c or c > 9:
continue
if 1 > b or b > 9:
continue
if c + b != r2 or a + b != d2 or a + c != c2:
continue
else:
print(x, a)
print(b, c)
sys.exit(0)
print(-1)
#include<iostream>
#include <string.h>
#include<math.h>
// #include <bits/stdc++.h>
using namespace std;
bool isPrime(int n){
for (int i=2; i<n; i++){
if (n%i==0) return 0;
}
return 1;
}
int maxRepetition(string s){
unsigned int firstPtr = 0, secondPtr = 1, maxLength = -1, length = 1;
while (secondPtr<=s.length()){
if (s[firstPtr]!=s[secondPtr]){
if (length>maxLength) {
maxLength = length;
}
firstPtr = secondPtr;
secondPtr++;
length = 1;
}
else{
++length;
++secondPtr;
}
}
// cout << maxLength << " ";
return maxLength;
}
void odd_EvenArray(int arr[], int size){
int even = 0, odd = 0, cnt = 0, oddArray[300], evenArray[300];
for (int i=0; i<size; i++){
if (arr[i]%2==0) {
evenArray[even] = i+1;
even++;
}
}
for (int i=0; i<size; i++){
if (arr[i]%2!=0) {
oddArray[odd] = i+1;
odd++;
}
}
if (odd>=3){
cout << "YES\n";
cout << oddArray[0] << " " << oddArray[1] << " " << oddArray[2] << "\n";
}
else if ((odd>=1 && even>=2)){
cout << "YES\n";
cout << oddArray[0] << " " << evenArray[0] << " " << evenArray[1] << "\n";
}
else{
cout << "NO\n";
}
}
// int moves2_3(int n){
// if (n==1) return 2;
// if (n%3==0) return n/3;
// return (n/3+1);
// }
void roundCheck(int n){
if (n<10 && n>0){
cout << 1 << "\n" << n << "\n";
}
else{
int digit, power = 0, cnt = 0, m = n;
while (m>0){
if (m%10!=0) cnt++;
m/=10;
}
cout << cnt << "\n";
while (n>0){
digit = n%10;
if (digit==0){
n/=10;
power++;
}
else{
cout << digit * pow(10,power) << " ";
n/=10;
power++;
}
}
cout << "\n";
}
}
int AverageArray(int arr[] ,int size, int ptr, int avg){
// Array to be sorted
if (ptr==size) return avg;
avg = arr[ptr]/size;
return AverageArray(arr, size, ++ptr, avg);
}
int aTob(long long int a, long long int b){
long long int diff, cnt = 0;
if (a==b) return 0;
else{
if (a>b){
diff = a - b;
while (diff!=0){
if (diff>10){
a-=10;
cnt++;
diff = a - b;
}
else{
a-=diff;
cnt++;
diff = a - b;
}
}
}
else{
diff = b - a;
while (diff!=0){
if (diff>10) {
b-=10;
cnt++;
diff = b - a;
}
else{
b = b - diff;
cnt++;
diff = b - a;
}
}
}
}
return cnt;
}
void differentNum(int arr[], int n){
int cnt;
for (int i=0; i<n; i++){
cnt = 0;
for (int j=0; j<i; j++){
if (arr[i]==arr[j]) cnt++;
}
for (int j=i+1; j<n; j++){
if (arr[i]==arr[j]) cnt++;
}
if (cnt==0) {
cout << i+1 << "\n";
break;
}
// cout << cnt << " ";
}
}
void repeatedString(string s){
bool flag = 1;
int arr[50], index;
for (int i=0; i<s.length()-1; i++){
if (!flag){
cout << "NO\n";
break;
}
if (s[i]!='-'){
index = 1;
arr[0] = i;
for (int j=i+1; j<s.length(); j++){
if (s[i]==s[j]){
arr[index] = j;
index++;
s[j] = '-';
}
}
for (int j=1; j<index; j++){
if ((arr[j] - arr[j-1])!=1){
flag = 0;
break;
}
}
}
}
if (flag) cout << "YES\n";
}
int sum2Nterms(int n){
if (n==0) return 0;
return sum2Nterms(n-1) + n;
}
int ans(int n){
int sum = 0, plates = 0;
for (int i=1; i<=n; i++){
plates++;
sum+=sum2Nterms(i);
if (sum>n){
sum-=sum2Nterms(i);
plates--;
}
}
// cout << plates << " ";
return plates;
}
bool isPowerN(int n, int power){
float a = log(n)/log(power);
float b = a - int(a);
if (b>0) return 0;
return 1;
}
int main(){
// int n,m; cin >> n >> m;
// int arr[50];
// for (int i=0; i<m; i++){
// cin >> arr[i];
// }
// sort(arr,arr+m);
// int min = 9999, diff;
// int firstPtr = 0;
// int secondPtr = n-1;
// while (secondPtr<m){
// diff = arr[secondPtr] - arr[firstPtr];
// if (diff < min) min = diff;
// firstPtr++; secondPtr++;
// }
// cout << min << "\n";
// int a,b; cin >> a >> b;
// if (a>=b) numberEmeralds(a,b);
// else{
// numberEmeralds(b,a);
// }
// int t, arr[10000], ele; cin >> t;
// for (int i=0; i<t; i++){
// cin >> ele;
// arr[i] = moves2_3(ele);
// }
// for (int i=0; i<t; i++){
// cout << arr[i] << "\n";
// }
// long long int n, arr[200000], ele; cin >> n;
// long long sum = (n * (n + 1)) / 2;
// for (int i=0; i<n-1; i++){
// cin >> ele;
// sum-=ele;
// }
// cout << sum << "\n";
// string s; cin >> s;
// long long int n, arr[200000], moves = 0, diff; cin >> n;
// for (long long int i=0; i<n; i++){cin >> arr[i];}
// long long int curPtr = 1;
// while (curPtr<n){
// diff = arr[curPtr] - arr[curPtr-1];
// if (diff < 0) {
// arr[curPtr]+=(-diff);
// moves+=(-diff);
// }
// curPtr++;
// }
// cout << moves << "\n";
// int n, m; cin >> n >> m;
// int num2 = n/2;
// int num1 = n - num2*2;
// int min = num1 + num2, max = 0;
// for (int i=0; i<num2; i++){
// max+=2;
// }
// for (int j=0; j<num1; j++){
// max++;
// }
// int flag = 0;
// for (int i=min; i<=max; i++){
// if (i%m==0){
// cout << i << "\n";
// flag = 1;
// break;
// }
// }
// if (!flag) cout << -1 << "\n";
// int t, n, digit, power; cin >> t;
// for (int i=0; i<t; i++){
// cin >> n;
// }
// int t, flag, ele, arr[6], numDigits, sum1, sum2; cin >> t;
// string ans[1000];
// for (int i=0; i<t; i++){
// cin >> ele;
// numDigits = 0;
// sum1 = 0, sum2 = 0;
// while (ele>0){
// arr[numDigits] = ele%10;
// numDigits++;
// ele/=10;
// }
// for (int j=0; j<numDigits/2; j++){
// sum1+=arr[j];
// }
// for (int j=numDigits/2; j<numDigits; j++){
// sum2+=arr[j];
// }
// if (sum2==sum1) ans[i] = "YES\n";
// else{
// ans[i] = "NO\n";
// }
// }
// for (int i=0; i<t; i++){
// cout << ans[i];
// }
// int n, x,numberElements, t; cin >> t;
// for (int j=0; j<t; j++){
// cin >> n >> x;
// if (n==1 || n==2) cout << 1 << "\n";
// else{
// numberElements = n - 2;
// if (numberElements%x==0) cout << (numberElements/x)+1 << "\n";
// else{
// cout << (numberElements/x)+2 << "\n";
// }
// }
// }
// int t; cin >> t;
// long long int a,b;
// float diff;
// for (int i=0; i<t; i++){
// cin >> a >> b;
// // cout << aTob(a,b) << "\n";
// if (a==b) cout << 0 << "\n";
// else{
// diff = a - b;
// if (diff<0) diff = -diff;
// diff = diff/10;
// if (float(diff - int(diff)) > 0.0) cout << int(diff)+1 << "\n";
// else{
// cout << int(diff) << "\n";
// }
// }
// }
// int n, diff; cin >> n;
// if (n==12) cout << 4 << " " << 8 << "\n";
// if (n==13) cout << 4 << " " << 9 << "\n";
// if (n==14) cout << 4 << " " << 10 << "\n";
// if (n>=15){
// if (n%2==0){
// diff = n - 10;
// cout << diff << " " << n - diff << "\n";
// }
// else{
// diff = (n + 1) - 10;
// cout << diff << " " << n - diff << "\n";
// }
// }
// int n, k; cin >> n >> k;
// int arr[2000], cnt = 0;
// for (int i=0; i<n; i++){
// cin >> arr[i];
// }
// if (n>=3){
// sort(arr,arr+n);
// int teamPtr = 0, max = -1, teams;
// while (teamPtr<n){
// if (arr[teamPtr]>max) max = arr[teamPtr];
// if (arr[teamPtr+1]>max) max = arr[teamPtr+1];
// if (arr[teamPtr+2]>max) max = arr[teamPtr+2];
// teamPtr+=3;
// if ((5 - max) >= k) cnt++;
// if (n - teamPtr < 3) break;
// max = -1;
// }
// cout << cnt << "\n";
// }
// else{
// cout << 0 << "\n";
// }
// int n, c, arr[100], max = -1, diff; cin >> n >> c;
// for (int i=0; i<n; i++){
// cin >> arr[i];
// }
// for (int i=0; i<n-1; i++){
// diff = arr[i] - arr[i+1] - c;
// if (diff>max) max = diff;
// }
// if (max==-1) cout << 0 << "\n";
// else{
// cout << max << "\n";
// }
// int t, n, arr[100],flag, firstPtr, secondPtr; cin >> t;
// for (int i=0; i<t; i++){
// cin >> n;
// firstPtr = 0;
// secondPtr = 1;
// for (int j=0; j<n; j++){
// cin >> arr[j];
// }
// if (n==1) cout << "YES\n";
// else{
// flag = 1;
// sort(arr, arr+n);
// while (secondPtr<n){
// if (arr[firstPtr]>=arr[secondPtr]){
// flag = 0;
// break;
// }
// firstPtr = secondPtr;
// secondPtr++;
// }
// if (flag) cout << "YES\n";
// else{
// cout << "NO\n";
// }
// }
// }
// int x, y, diff, max; cin >> x >> y;
// if (x==y){
// if (x<=5){
// if (x==1) cout << "1/1" << "\n";
// else {
// diff = 7 - x;
// if (diff%2==0) cout << diff/2 << "/" << 3 << "\n";
// else if (diff%3==0) {
// cout << diff/3 << "/" << 2 << "\n";
// }
// else{
// cout << diff << "/" << 6 << "\n";
// }
// }
// }
// else{
// cout << 1 << "/" << 6 << "\n";
// }
// }
// else{
// if (x>y) max = x;
// else{
// max = y;
// }
// diff = 7 - max;
// if (diff==6) cout << 1 << "/" << 1 << "\n";
// else{
// // cout << diff << "\n";
// if (diff%2==0) cout << diff/2 << "/" << 3 << "\n";
// else if (diff%3==0) {
// cout << diff/3 << "/" << 2 << "\n";
// }
// else{
// cout << diff << "/" << 6 << "\n";
// }
// }
// }
// int arr[1000];
// int index = 0, num = 1;
// while (index<1000){
// if (num%3==0 || num%10==3){
// num++;
// }
// else{
// arr[index] = num;
// num++; index++;
// }
// }
// int t; cin >> t;
// for (int i=0; i<t; i++){
// cin >> num;
// cout << arr[num-1] << "\n";
// }
// int t, n,arr[100]; cin >> t;
// for (int i=0; i<t; i++){
// cin >> n;
// for (int j=0; j<n; j++){
// cin >> arr[j];
// }
// differentNum(arr,n);
// }
// int n, v, arr[50], numSell, flag, ele, index = 0; cin >> n >> v;
// for (int i=0; i<n; i++){
// cin >> numSell;
// flag = 0;
// for (int j=0; j<numSell; j++){
// cin >> ele;
// if (ele<v) flag = 1;
// }
// if (flag){
// arr[index] = i+1;
// index++;
// }
// }
// cout << index << "\n";
// for (int i=0; i<index; i++){
// cout << arr[i] << " ";
// }
// int t, n; cin >> t;
// for (int i=0; i<t; i++){
// cin >> n;
// if (n%2==0) cout << n/2 << "\n";
// else{
// cout << (n/2) + 1 << "\n";
// }
// }
// int n, m; cin >> n >> m;
// char colors[100];
// int wbg = 0, cmy = 0;
// for (int i=0; i<n; i++){
// for (int j=0; j<m; j++){
// cin >> colors[i];
// if (colors[i]=='C' || colors[i]=='M' || colors[i]=='Y') cmy++;
// else{
// wbg++;
// }
// }
// }
// if (wbg==(n*m)) cout << "#Black&White\n";
// else{
// cout << "#Color\n";
// }
// int t, n; cin >> t;
// string s;
// for (int i=0; i<t; i++){
// cin >> n;
// cin >> s;
// repeatedString(s);
// }
// int t,n, flag, x,y; cin >> t;
// string s;
// for (int i=0; i<t; i++){
// cin >> n;
// cin >> s;
// flag = 0;
// x = 0, y = 0;
// for (int j=0; j<n; j++){
// if (x==1 && y==1){
// flag = 1;
// break;
// }
// if (s[j]=='L') x -= 1;
// if (s[j]=='R') x += 1;
// if (s[j]=='U') y += 1;
// if (s[j]=='D') y -= 1;
// }
// if (x==1 && y==1) {
// cout << "YES\n";
// flag = 1;
// }
// else{
// cout << "NO\n";
// }
// }
// int t, n; cin >> t;
// for (int i=0; i<t; i++){
// cin >> n;
// if ((n+5)%2==0) cout << 5 << "\n";
// else{
// cout << 7 << "\n";
// }
// }
// int a[4]; cin >> a[0] >> a[1] >> a[2] >> a[3];
// string s; cin >> s;
// int sum = 0;
// for (int i=0; i<s.length(); i++){
// if (s[i]=='1') sum+=a[0];
// if (s[i]=='2') sum+=a[1];
// if (s[i]=='3') sum+=a[2];
// if (s[i]=='4') sum+=a[3];
// }
// cout << sum << "\n";
// int n; cin >> n; cout << 25;
// int n; cin >> n; cout << ans(n) << "\n";
// int n, sum = 0; cin >> n;
// for (int j=1; j<=n; j++){
// for (int i=1; i<n; i++){
// if (j%i==0) sum++;
// }
// cout << sum << " ";
// }
// cout << "\n";
// int n, d, arr[100], sumSongs = 0; cin >> n >> d;
// for (int i=0; i<n; i++){
// cin >> arr[i];
// sumSongs+=arr[i];
// }
// int number10 = 10 * (n-1);
// if (number10+sumSongs>d) cout << -1 << "\n";
// else{
// int numJokes = number10/5;
// numJokes += (d - (number10 + sumSongs)) / 5;
// cout << numJokes << "\n";
// }
// int a, b, t, diff; cin >> t;
// for (int i=0; i<t; i++){
// cin >> a >> b;
// if (a==b) cout << 0 << "\n";
// else{
// if (a>b){
// diff = a - b;
// if (diff%2==0) cout << 1 << "\n";
// else{
// cout << 2 << "\n";
// }
// }
// else{
// diff = b - a;
// if (diff%2==0) cout << 2<< "\n";
// else{
// cout << 1 << "\n";
// }
// }
// }
// }
// int n, m, k; cin >> n >> m >> k;
// if (n>m || n>k) cout << "No\n";
// else{
// cout << "Yes\n";
// }
// int n, m; cin >> n >> m;
// if (m==0){
// if (n==1) cout << 0 << "\n";
// else{
// cout << "No solution\n";
// }
// }
// else{
// cout << m << "";
// n--;
// for (int i=0; i<n; i++){
// cout << 0 << "";
// }
// cout << "\n";
// }
// int t, n; cin >> t;
// for (int j=1; j<=t; j++){
// n = j;
// if (n<10) cout << n << " ";
// else{
// int sum = 0, flag;
// for (int i=1; i<=n; i++){
// flag = 1;
// int d = i, last = d%10;
// d/=10;
// while (d>0){
// if (d%10!=last){
// flag = 0;
// break;
// }
// d/=10;
// }
// if (flag) sum++;
// }
// cout << sum << " ";
// }
// }
// cout << "\n";
// int n; cin >> n;
// int arr[10][10];
// for (int i=0; i<n; i++){
// arr[0][i] = 1;
// arr[i][0] = 1;
// }
// for (int i=1; i<n; i++){
// for (int j=1; j<n; j++){
// arr[i][j] = arr[i][j-1] + arr[i-1][j];
// }
// }
// cout << arr[n-1][n-1] << "\n";
// int n, k; cin >> n >> k;
// cout << k * ((n/k)+1) << "\n";
// int t, n; cin >> t;
// string s;
// for (int i=0; i<t; i++){
// cin >> n >> s;
// for (int j=0; j<n; j++){
// if (s[j]=='U') cout << 'D';
// else if (s[j]=='D') cout << 'U';
// else{
// cout << s[j] << "";
// }
// }
// cout << "\n";
// }
int r1, r2, c1, c2, d1, d2; cin >> r1 >> r2 >> c1 >> c2 >> d1 >> d2;
int x,y,z,w;
y = (r1 - c1 + d2) / 2;
z = d2 - y;
x = r1 - y;
w = c2 - y;
if (x==y || z==w || x<=0 || y<=0 || z<=0 || w<=0 || x>9 || y>9 || z>9 || w>9 || x==z || y==w || x==w || y==z || (x+y)!=r1 || (z+w)!=r2 || (x+z)!=c1 || (w+y)!=c2 || (y+z)!=d2 || (x+w)!=d1) cout << -1 << "\n";
else{
cout << x << " " << y << "\n" << z << " " << w << "\n";
}
return 0;
}
1302. Deepest Leaves Sum | 1209. Remove All Adjacent Duplicates in String II |
994. Rotting Oranges | 983. Minimum Cost For Tickets |
973. K Closest Points to Origin | 969. Pancake Sorting |
967. Numbers With Same Consecutive Differences | 957. Prison Cells After N Days |
946. Validate Stack Sequences | 921. Minimum Add to Make Parentheses Valid |
881. Boats to Save People | 497. Random Point in Non-overlapping Rectangles |
528. Random Pick with Weight | 470. Implement Rand10() Using Rand7() |
866. Prime Palindrome | 1516A - Tit for Tat |
622. Design Circular Queue | 814. Binary Tree Pruning |
791. Custom Sort String | 787. Cheapest Flights Within K Stops |
779. K-th Symbol in Grammar | 701. Insert into a Binary Search Tree |
429. N-ary Tree Level Order Traversal | 739. Daily Temperatures |
647. Palindromic Substrings | 583. Delete Operation for Two Strings |
518. Coin Change 2 | 516. Longest Palindromic Subsequence |
468. Validate IP Address | 450. Delete Node in a BST |