Why is this Fermat primality tester giving me an exception?

```
class PrimeTest
{
    public static bool IsPrime(long n, int iteration = 5)
    {
        Random r = new Random();
        long a = 0;
        long aPow = 0;

        for (int i = 0; i < iteration; i++)
        {
            a = r.Next(1, Convert.ToInt32(n - 1));

            double x = Convert.ToDouble(a);
            double y = Convert.ToDouble(n - 1);
            double p = Math.Pow(x, y);

            aPow = Convert.ToInt64(p);//<==== this line is giving an exception.

            if (1 % n == aPow % n)
            {
                return true;
            }
        }

        return false;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("{0}", PrimeTest.IsPrime(33));
        Console.ReadLine();
    }
}

```

**Output**

```
An unhandled exception of type 'System.OverflowException' occurred in mscorlib.dll

Additional information: Arithmetic operation resulted in an overflow.

```