function fun (id, pr, n, a):
    lo := id * n / pr
    hi := (id + 1) * n / pr

    cand := 0
    balance := 0
    for i := lo until hi:
        if balance == 0:
            cand := a[i]
        if cand == a[i]:
            balance += 1
        else:
            balance -= 1
    send (0, cand, balance)

    if id == 0:
        c := 0
        b := 0
        for k := 0 until pr:
            nc := receive (k)
            nb := receive (k)
            if c == nc:
                b += nb
            else:
                b -= nb
                if b < 0:
                    c := nc
                    b := -b
        for k := 0 until pr:
            send (k, c)

    cur := receive (0)
    total := 0
    for i := lo until hi:
        if a[i] == cur:
            total += 1
    send (0, total)
    
    if id == 0:
        num := 0
        for k := 0 until pr:
            num += receive (k)
        if num + num > n:
            print (cur)
        else:
            print (-1)
