1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import math

def factorial(n):
    if n == 0 or n == 1:
        return 1
    res = 1
    for i in range(2, n + 1):
        res *= i
    return res

def comb(n, k):
    if k > n:
        return 0
    return factorial(n) // (factorial(k) * factorial(n - k))

def find_max_permutation_length(a, b, c):
    n = a + b - 1  # Maksymalna długość permutacji w przypadku szczególnym
    return n

def count_permutations(n, a, p):
    return comb(n, a) % p

def main():
    # Wczytanie danych wejściowych
    a, b, c, p = map(int, input().split())

    # Obliczanie najdłuższej permutacji
    n = find_max_permutation_length(a, b, c)
    
    # Liczenie permutacji modulo p
    num_permutations = count_permutations(n, a, p)

    # Wypisanie wyniku
    print(n, num_permutations)

if __name__ == "__main__":
    main()