#include <bits/stdc++.h>
using namespace std;
long long moda = (1ll << 55) + 3;
long long modb = (1ll << 55) + 772347;
inline void print(char pt) { printf("%c\n", pt); }
inline void print(int pt) { printf("%d\n", pt); }
inline void print(long long pt) { printf("%I64d\n", pt); }
inline void print(double pt) { printf("%.10f\n", pt); }
inline void print(char pt[]) { printf("%s\n", pt); }
inline void print() { printf("\n"); }
inline void scan(int &pt) { scanf("%d", &pt); }
inline void scan(char &pt) { scanf("%c", &pt); }
inline void scan(long long &pt) { scanf("%I64d", &pt); }
inline void scan(double &pt) { scanf("%lf", &pt); }
inline void scan(char pt[]) { scanf("%s", pt); }
long long extend_gcd(long long a, long long b, long long &x, long long &y) {
  if (a == 0 && b == 0) return -1;
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  long long d = extend_gcd(b, a % b, y, x);
  y -= a / b * x;
  return d;
}
long long mod_reverse(long long a, long long MOD) {
  long long x, y;
  long long d = extend_gcd(a, MOD, x, y);
  if (d == 1)
    return (x % MOD + MOD) % MOD;
  else
    return -1;
}
void fail() {
  print(-1);
  exit(0);
}
int n, m;
double w[200][200];
double a[200][200];
double b[200][200];
int main() {
  scan(n);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      scan(w[i][j]);
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      a[i][j] = (w[i][j] + w[j][i]) / 2;
      print(a[i][j]);
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      b[i][j] = w[i][j] - a[i][j];
      print(b[i][j]);
    }
  }
  return 0;
}
