def g_(m):
    ans = 1
    for i in range(len(m) - 1):
        if m[i] == m[i + 1]:
            ans += 1
        else:
            return ans
    return ans


def s_(mo0):
    ans = 1
    for i in range(len(mo0) - 1):
        if mo0[i] == mo0[i + 1]:
            ans += 1
        else:
            return ans
    return ans


def first_op(ms):
    for i in range(len(ms)):
        if i == 0:
            if ms[-(1 + i)] == ms[-(2 + i)]:
                del ms[-(1 + i)]
            else:
                return ms[:-1]
        else:
            if ms[-(1 + i)] == ms[(-2 + i)]:
                del ms[-(1 + i)]
            else:
                return ms
    return ms


for t in range(int(input())):
    n = int(input())
    mas = list(map(int, input().split()))
    mas = sorted(mas)
    mas = mas[::-1]
    mas = mas[:n // 2 + 1]
    if len(mas) >= 3:
        mas = first_op(mas)
        co = mas
        g, s, b = 0, 0, 0
        g = g_(mas)
        mas = mas[g:]
        s = s_(mas)
        b = len(co) - s - g
        if len(mas) > 1:
            if mas[-1] != mas[-2]:
                b -= 1
        if g == 0 or s == 0 or b == 0:
            print("0 0 0")
        else:
            print(g, s, b)
    else:
        print("0 0 0")
