#include using namespace std; #define fwd(i, a, n) for (int i = (a); i < (n); i ++) #define rep(i, n) fwd(i, 0, n) #define all(X) begin(X), end(X) #define sz(X) ((int)X.size()) #define st first #define nd second #define pii pair #define vi vector #define ll long long #ifdef LOC auto &operator<<(auto &out, pair a) { return out << "(" << a.st << ", " << a.nd << ")"; } auto &operator<<(auto &out, auto a) { out << "{"; for (auto b : a) out << b << ", "; return out << "}"; } void dump(auto... x) { ((cerr << x << ", "), ...) << '\n'; } #define debug(x...) cerr << "[" #x "]: ", dump(x) #else #define debug(...) 0 #endif int ceil(int a, int b){ int res = a / b; if(a % b != 0)res++; return res; } vector p; vector cnt; int find(int a){ if(p[a] != a)p[a] = find(p[a]); return p[a]; } void uni(int a, int b){ a = find(a); b = find(b); if(a == b)return; if(cnt[a] < cnt[b])swap(a, b); cnt[a] += cnt[b]; p[b] = a; } int32_t main() { ios_base::sync_with_stdio(0), cin.tie(0); int n; cin>>n; p.resize(n, 0); cnt.resize(n, 1); rep(i, n)p[i] = i; vector> g(n, vector(n, 0)); int maxA = ceil(3*n, 4) + 1; int maxPath = ceil(3*n, 4); debug(maxPath); int mul = 1; vector left(n, false); int a = 0; int xd = 0; string str; rep(i, n){ cin>>str; rep(j, i){ if(str[j] == 'S'){ xd++; g[i][j] = 1; g[j][i] = 1; uni(i, j); }else if(str[j] == 'F'){ xd--; g[i][j] = -1; g[j][i] = -1; uni(i, j); } } } if(xd < 0){ mul = -1; rep(i, n){ rep(j, n){ g[i][j] *= -1; } } } rep(i, n){ if(cnt[find(i)] > 2){ left[i] = true; a++; } } rep(i, n){ if(cnt[find(i)] == 2 && i != p[i]){ int u = i; int v = p[i]; if(g[u][v] == -1){ left[u] = true; a++; } } } rep(i, n){ if(cnt[find(i)] == 2 && i != p[i]){ int u = i; int v = p[i]; if(g[u][v] == 1){ if(a + 2 <= maxA){ left[u] = left[v] = true; a += 2; } } } } rep(i, n){ if(cnt[find(i)] == 1){ if(a < maxA){ left[i] = true; a++; } } } debug(a, maxA); rep(i, n){ rep(j, n){ if(i != j && g[i][j] == 0){ if(left[i] == left[j]){ g[i][j] = 1; }else{ g[i][j] = -1; } } } } rep(i, n){ rep(j, n){ if(i == j){ cout<<"."; }else{ if(g[i][j] * mul == 1){ cout<<"S"; }else{ cout<<"F"; } } } cout<<"\n"; } return 0; }