import java.util.*;

class Diffie_Hellman { 
    private static long power(long a, long b, long p) {
        if (b == 1)
            return a;
        else
            return (((long)Math.pow(a, b)) % p);
    }

    public static void main(String[] args) {
        long P, G, x, a, y, b, ka, kb;
        Scanner s = new Scanner(System.in);
        
        System.out.println("The value of prime number:");
        P = s.nextLong();
        
        System.out.println("The value of primitive root of the prime number:");
        G = s.nextLong();
        
        System.out.println("The private key of User 1:");
        a = s.nextLong();
        x = power(G, a, P);
        
        System.out.println("The private key of User 2:");
        b = s.nextLong();
        y = power(G, b, P);
        
        ka = power(y, a, P); 
        kb = power(x, b, P); 
        
        System.out.println("Secret key for User 1 is: " + ka);
        System.out.println("Secret key for User 2 is: " + kb);
    }
}
