Alice and Bob created $N$ and $M$ recipes, respectively ($N, M \ge 1$), and submitted them to Chef for evaluation. Each recipe is represented by a string containing only lowercase English letters. Let's denote Alice's recipes by $A_1, A_2, \ldots, A_N$ and Bob's recipes by $B_1, B_2, \ldots, B_M$.
Accidentally, Chef mixed up those recipes ― now, he has $L = N+M$ recipes in a sequence $S_1, S_2, \ldots, S_L$. Thankfully, the recipes created by Alice and Bob are distinguishable from each other. It is well-known that for each recipe $s$ created by Alice, the following property holds, and for each recipe created by Bob, it does not hold: For each $1 \le l < r \le |s|$, the substring $s_l, s_{l+1}, \ldots, s_r$ contains at least as many vowels as consonants. The letters 'a', 'e', 'i', 'o', 'u' are vowels, while the other letters are consonants.
The score of a candidate who made $K$ recipes is calculated as the product of $\frac{x_c}{fx_c^K}$ for all letters $c$ that occur in at least one of these recipes; here, $x_c$ is the number of recipes which contain the letter $c$ and $fx_c$ is the total number of occurrences of this letter in all $K$ recipes.
Let's denote the scores of Alice and Bob by $sc_A$ and $sc_B$ respectively. Chef wants to know their ratio $sc_A/sc_B$. We know that Chef is a legendary cook, but he is not very good at calculating, so he is asking you to find that number.

-----Input-----
- The first line of the input contains a single integer $T$ denoting the number of test cases. The description of $T$ test cases follows.
- The first line of each test case contains a single integer $L$.
- $L$ lines follow. For each valid $i$, the $i$-th of these lines contains a single string $S_i$.

-----Output-----
For each test case, if the ratio of scores exceeds $10^7$, print a single line containing the string "Infinity" (without quotes); otherwise, print a single line containing one real number $sc_A/sc_B$.
Your answer will be considered correct if its absolute or relative error does not exceed $10^{-6}$. It is guaranteed that $sc_A/sc_B$ does not lie in the range $10^7 \pm 10$.

-----Constraints-----
- $1 \le T \le 10^5$
- $2 \le L \le 10^5$
- $2 \le |S_i| \le 10^5$ for each valid $i$
- for each valid $i$, $S_i$ contains only lowercase English letters
- the sum of $|S_1| + |S_2| + \ldots + |S_L|$ over all test cases does not exceed $10^7$

-----Subtasks-----
Subtask #1 (25 points):
- $L \le 10$
- $|S_i| \le 10$ for each valid $i$
Subtask #2 (75 points): original constraints

-----Example Input-----
2
4
aba
abc
bab
aac
3
aba
baab
abc

-----Example Output-----
1.1250000
0.0277778

-----Explanation-----
Example case 1: The recipes "aba" and "aac" are created by Alice, while the recipes "abc" and "bab" are created by Bob. The scores are:
- $sc_A = \frac{x_a}{fx_a^N} \cdot \frac{x_b}{fx_b^N} \cdot \frac{x_c}{fx_c^N} = \frac{2}{4^2} \cdot \frac{1}{1^2} \cdot \frac{1}{1^2} = \frac{1}{8}$
- $sc_B = \frac{x_a}{fx_a^M} \cdot \frac{x_b}{fx_b^M} \cdot \frac{x_c}{fx_c^M} = \frac{2}{2^2} \cdot \frac{2}{3^2} \cdot \frac{1}{1^2} = \frac{1}{9}$
- $\frac{sc_A}{sc_B} = \frac{1/8}{1/9} = 1.125$

```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 = 'import time\nimport math\nimport random\nimport string\n\ndef log2(x):\n return math.log(x, 2)\n\nMAX = log2(1e7)\nMIN = log2(1e-7)\n\nstart_time = time.time()\n\nvowels = \'aeiou\'\nv = {"a": 1, "e": 1, "i": 1, "o": 1, "u": 1}\nabets = string.ascii_lowercase\n\ntcs = int(input())\n\nfor test in range(tcs):\n l = int(input())\n a = []\n b = []\n for _ in range(l):\n  flag = False\n  s = input()\n  for i in range(len(s)-2):\n   if s[i] not in vowels:\n    if s[i+1] not in vowels or s[i+2] not in vowels:\n     flag = True\n     break\n   else:\n    if s[i+1] not in vowels and s[i+2] not in vowels:\n     flag = True \n     break\n  if flag:\n   b.append(s)\n  else:\n   a.append(s)\n # for wer in range(l):\n #     s = input()\n #     n = len(s)\n #     c1 = 0\n #     for i in range(n):\n #         if s[i] not in v:\n #             if i+1 < n:\n #                 if s[i+1] not in v:\n #                     c1 = 1\n #                     break\n #             if i+2 < n:\n #                 if s[i+2] not in v:\n #                     c1 = 1\n #                     break\n #     if c1 == 1:\n #         b.append(s)\n #     else:\n #         a.append(s)\n alen = len(a)\n blen = len(b)\n # ################ Alice ##############\n achar_dict = {}\n atotal_dict = {}\n for recipe in a:\n  d = {}\n  for ch in recipe:\n   d[ch] = 1\n   if atotal_dict.get(ch):\n    atotal_dict[ch] += 1\n   else:\n    atotal_dict[ch] = 1\n  for ch in d:\n   if achar_dict.get(ch):\n    achar_dict[ch] += 1\n   else:\n    achar_dict[ch] = 1\n ################ Bob ##############\n bchar_dict = {}\n btotal_dict = {}\n for recipe in b:\n  d = {}\n  for ch in recipe:\n   d[ch] = 1\n   if btotal_dict.get(ch):\n    btotal_dict[ch] += 1\n   else:\n    btotal_dict[ch] = 1\n  for ch in d:\n   if bchar_dict.get(ch):\n    bchar_dict[ch] += 1\n   else:\n    bchar_dict[ch] = 1\n ################## Calculation ##################\n result = 0\n for i in achar_dict:\n  result += log2(achar_dict[i]) - alen*log2(atotal_dict[i])\n  \n for i in bchar_dict:\n  result += blen*log2(btotal_dict[i]) - log2(bchar_dict[i])\n\n if result > MAX:\n  print(\'Infinity\')\n elif result < MIN:\n  print(0)\n else:\n  print(2**result)\n  # print(\'%.7f\' % 10**result)\n\n# print(time.time() - start_time)\n'
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: 14605