#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const int N = 1000005;
const int M = 10;
const int inf = 1000000005;
const int mod = 1000000007;
char s[N], a[N];
stack<char> p;
int main() {
  while (!p.empty()) p.pop();
  int n, k = 0, i;
  bool flag = true;
  scanf("%d", &n);
  getchar();
  gets(s);
  if (!strcmp(s, "int")) {
    puts("int");
    return 0;
  }
  for (i = 0; s[i] != '\0'; i++) {
    if (s[i] != ' ')
      a[k++] = s[i];
    else {
      if (!p.empty() && p.top() == 'p')
        a[k++] = '<';
      else if (!p.empty() && p.top() == 't')
        a[k++] = ',';
    }
    if (s[i] == 'p')
      p.push('p');
    else if (s[i] == 't')
      if (p.empty() || p.top() != 't')
        p.push('t');
      else {
        a[k++] = '>';
        p.pop();
        if (p.empty())
          flag = false;
        else
          p.pop();
        while (!p.empty() && p.top() == 't') {
          a[k++] = '>';
          p.pop();
          if (p.empty())
            flag = false;
          else
            p.pop();
        }
        if (!p.empty()) p.push('t');
      }
  }
  a[k] = '\0';
  if (p.empty() && flag)
    puts(a);
  else
    puts("Error occurred");
}
