using System;
using System.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Numerics;
namespace No313
{
class Program
{
static void Main(string[] args)
{
var pi = GetPi().ToString();
var piArray = pi.ToCharArray();
foreach (var piNum in piArray)
{
var a = Console.Read();
var b = Convert.ToChar(a);
if (b != piNum)
{
Console.Write(b + " " + piNum);
return;
}
}
}
static BigInteger GetPi()
{
// 桁数
int iSize = Convert.ToInt32("200000");
//各種変数の初期化
BigInteger oOne = new BigInteger(1);
for (int i = 0; i < iSize; i++)
{
oOne = oOne * 10;
}
BigInteger x = oOne;
BigInteger y = oOne >> 1;
BigInteger z = y;
BigInteger sq = 0;
//サラミンブレント法でPIを算出
int iLoop = (int)Math.Log((double)iSize, 2.0) + 1;
for (int i = 1; i < iLoop; i++)
{
BigInteger pb = (x + y) >> 1;
//ニュートン法による平方根の算出
sq = SqrtNewton(x * y, pb);
x = (pb + sq) >> 1;
y = sq;
z = z - ((x - sq) << i);
}
return ((x + sq) * oOne) / z;
}
///
/// ニュートン法による平方根の算出
///
/// 入力値
/// 初期値
/// 平方根(X)
/// X0として近似値を与えると高速で算出できる
static BigInteger SqrtNewton(BigInteger x, BigInteger x0)
{
BigInteger xnn = x0; //X(n+1)
BigInteger xn = new BigInteger(0); //X(n)
while (xnn != xn)
{
xn = xnn;
xnn = (xnn + x / xnn) >> 1;
}
return xnn;
}
}
}