There are some websites that are accessible through several different addresses. For example, for a long time Codeforces was accessible with two hostnames codeforces.com and codeforces.ru.

You are given a list of page addresses being queried. For simplicity we consider all addresses to have the form http://<hostname>[/<path>], where:

  <hostname> — server name (consists of words and maybe some dots separating them),  /<path> — optional part, where <path> consists of words separated by slashes. 

We consider two <hostname> to correspond to one website if for each query to the first <hostname> there will be exactly the same query to the second one and vice versa — for each query to the second <hostname> there will be the same query to the first one. Take a look at the samples for further clarifications.

Your goal is to determine the groups of server names that correspond to one website. Ignore groups consisting of the only server name.

Please note, that according to the above definition queries http://<hostname> and http://<hostname>/ are different.


-----Input-----

The first line of the input contains a single integer n (1 ≤ n ≤ 100 000) — the number of page queries. Then follow n lines each containing exactly one address. Each address is of the form http://<hostname>[/<path>], where:

  <hostname> consists of lowercase English letters and dots, there are no two consecutive dots, <hostname> doesn't start or finish with a dot. The length of <hostname> is positive and doesn't exceed 20.  <path> consists of lowercase English letters, dots and slashes. There are no two consecutive slashes, <path> doesn't start with a slash and its length doesn't exceed 20. 

Addresses are not guaranteed to be distinct.


-----Output-----

First print k — the number of groups of server names that correspond to one website. You should count only groups of size greater than one.

Next k lines should contain the description of groups, one group per line. For each group print all server names separated by a single space. You are allowed to print both groups and names inside any group in arbitrary order.


-----Examples-----
Input
10
http://abacaba.ru/test
http://abacaba.ru/
http://abacaba.com
http://abacaba.com/test
http://abacaba.de/
http://abacaba.ru/test
http://abacaba.de/test
http://abacaba.com/
http://abacaba.com/t
http://abacaba.com/test

Output
1
http://abacaba.de http://abacaba.ru 

Input
14
http://c
http://ccc.bbbb/aba..b
http://cba.com
http://a.c/aba..b/a
http://abc/
http://a.c/
http://ccc.bbbb
http://ab.ac.bc.aa/
http://a.a.a/
http://ccc.bbbb/
http://cba.com/
http://cba.com/aba..b
http://a.a.a/aba..b/a
http://abc/aba..b/a

Output
2
http://cba.com http://ccc.bbbb 
http://a.a.a http://a.c http://abc

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

ns = {"__name__": "__main__"}
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = '3\n\nimport functools\nimport itertools\nimport operator\n\n\ndef split(address):\n\taddress = address[7:]\n\tp = address.find(\'/\')\n\tif p == -1:\n\t\treturn address, \'\'\n\n\treturn address[:p], address[p:]\n\n\ndef set_key(addr1, addr2):\n\tpages1, pages2 = addr1[1], addr2[1]\n\tl1 = len(pages1)\n\tl2 = len(pages2)\n\tif l1 != l2:\n\t\treturn l2 - l1\n\n\tfor page1, page2 in zip(pages1, pages2):\n\t\tif page1 < page2: return -1\n\t\tif page1 > page2: return 1\n\n\treturn 0;\n\n\ndef solve(addresses):\n\taddresses = list(map(split, addresses))\n\n\tm = dict()\n\tfor domain, page in addresses:\n\t\tif domain in m:\n\t\t\tm[domain].add(page)\n\t\telse:\n\t\t\tm[domain] = {page}\n\n\tl = [(domain, sorted(pages)) for domain, pages in list(m.items())]\n\n\tl.sort(key=functools.cmp_to_key(set_key))\n\n\tgroups = []\n\n\tgb = itertools.groupby(l, key=operator.itemgetter(1))\n\tfor key, group in gb:\n\t\tgroup_domains = [\'http://\'+d for d,ps in group]\n\t\tif(len(group_domains) > 1):\n\t\t\tgroups.append(group_domains)\n\n\t# print(groups)\n\treturn groups\n\n\ndef main():\n\tn = int(input())\n\taddresses = [None]*n\n\n\tfor i in range(n):\n\t\taddresses[i] = input()\n\n\tgroups = solve(addresses)\n\n\tprint(len(groups))\n\tfor group in groups:\n\t\tprint(\' \'.join(group))\n\n\ndef test():\n\t# addresses = """\n\t# \thttp://abacaba.ru/test\n\t# \thttp://abacaba.ru/\n\t# \thttp://abacaba.com\n\t# \thttp://abacaba.com/test\n\t# \thttp://abacaba.de/\n\t# \thttp://abacaba.ru/test\n\t# \thttp://abacaba.de/test\n\t# \thttp://abacaba.com/\n\t# \thttp://abacaba.com/t\n\t# \thttp://abacaba.com/test\n\t# \t""".split()\n\t# addresses = """\n\t# \thttp://c\n\t# \thttp://ccc.bbbb/aba..b\n\t# \thttp://cba.com\n\t# \thttp://a.c/aba..b/a\n\t# \thttp://abc/\n\t# \thttp://a.c/\n\t# \thttp://ccc.bbbb\n\t# \thttp://ab.ac.bc.aa/\n\t# \thttp://a.a.a/\n\t# \thttp://ccc.bbbb/\n\t# \thttp://cba.com/\n\t# \thttp://cba.com/aba..b\n\t# \thttp://a.a.a/aba..b/a\n\t# \thttp://abc/aba..b/a\n\t# \t""".split()\n\n\timport random\n\timport string\n\n\tn = 100000\n\n\taddresses = []\n\tfor i in range(n):\n\t\tdomain = \'\'.join([random.choice(string.ascii_lowercase) for dummy in range(5)])\n\t\tpage = \'\'.join([random.choice(string.ascii_lowercase) for dummy in range(5)])\n\t\taddresses.append(\'http://{}/{}\'.format(domain, page))\n\n\tprint(\'Solving...\')\n\ts = solve(addresses)\n\tprint(s)\n\n\ndef __starting_point():\n\t# test()\n\tmain()\n\n__starting_point()'
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: 14401