Manasa and Calculations

  • + 0 comments
    # Enter your code here. Read input from STDIN. Print output to STDOUT
    from functools import reduce
    m = 1000000007
    
    def mul_m(a, b):
        return a * b % m
    
    def zpow(a, b, m):
        return 0 if b == 0 else pow(a, b, m)
    
    n = int(input())
    a = [0] * n
    b = [0] * n
    p = [0] * n
    for i in range(n):
        p[i], b[i], a[i] = map(int, input().split())
    B = reduce(mul_m, [pow(p[i], b[i], m) for i in range(n)])
    if all(a[i] == b[i] for i in range(n)):
        print(B * 2 % m)
    else:
        print(B * reduce(mul_m, [1 + zpow(p[i], a[i] - b[i], m) for i in range(n)]) % m)