#include <iostream>
#include <math.h>
using namespace std;
#define eps 1e-6
#define zero(x) (((x)>0?(x):-(x))<eps)
int direct[6][2] = { { 0, 1 }, { -1, 1 }, { -1, 0 }, { 0, -1 }, { 1, -1 }, { 1, 0 } };//斜坐标系的六个方向
int main()
{
int x;
while (cin >> x)
{
double n = (sqrt(12 * x - 3)*1.0 - 3) / 6;
int p = zero(n - ceil(n)) ? (int) n : ceil(n);
int t = x - 3 * p * p + 3 * p - 1;
int xcord, ycord;
//x equals the n loops plus t.
//cout << (int) p << ' ' << t << endl;
xcord = p - 1; ycord = 0;
while (1)
{
if (t == 0) goto L1;//t==0就可以撤出来了~
xcord += direct[0][0], ycord += direct[0][1];//先向direct[0]走一步
t--;
if (t == 0) goto L1;
for (int i = 1; i <= p - 1; i++)
{
xcord += direct[1][0], ycord += direct[1][1];//再向direct[1]走p-1步
t--;
if (t == 0) goto L1;
}
for (int i = 2; i <= 6; i++)
{
for (int j = 1; j <= p; j++)
{
xcord += direct[i % 6][0], ycord += direct[i % 6][1];//然后向其他剩余的五个方向各走p步
t--;
if (t == 0) goto L1;
}
}
}
L1: cout << xcord << ' ' << ycord << endl;
}
}