#include <iostream>
#include <vector>
char arr[100][100] = {};
void f(int a, int b, int n)
{
int flag = 0;
int j = 0;
for (int i = 0; i < n; ++i)
{
for (j = 0; j < n; ++j)
{
if (arr[a][b] != arr[a + i][b + j])
break;
}
if (n != j)
{
flag = 1;
break;
}
}
if (0 == flag)
std::cout << arr[a][b];
else
{
std::cout << "(";
n /= 2;
f(a, b, n);
f(a, b + n, n);
f(a + n, b, n);
f(a + n, b + n, n);
std::cout << ")";
}
}
int main()
{
size_t n = 0;
std::cin >> n;
for (size_t i = 0; i < n; i++)
{
std::cin >> arr[i];
}
f(0, 0, n);
return 0;
}
둥지/알고리즘