/*
一个很有意思的问题。初看好像不好做。
在看,可以转化是取石子问题。
因为对于任意一堆数a,b。大的可能是小的好几倍,所以从a上取b可以取多个,然后才能转化为以b为大,a%b为小的下一堆。问题可以转化为:
若干堆石子,最后一堆只有一个石子,现在要求从左开始取,只有前一堆取完才能取下一堆。谁取到最后一个石子算胜。
可以使用必胜态必败态来做。
假设石子数量是
1 4 5 1
从右往左推,1是必胜态,因为轮到自己的时候,可以执行一步操作就到达要求的目标。
5是必胜态,因为我可以只取4个,然后剩下一个给对方,然后就可以转到下一个必胜态。
4是必胜态,因为我可以只取3个,然后剩下的一个对对方,然后就可以转到下一个必胜态
1是必败态,因为无论怎么操作,都会转化到必胜态。
*/
#include <cstdio>
#include <algorithm>
using namespace std;
int A,B,ans;
int d[30],top;
bool pn[30];
int gcd(int a,int b)
{
if(a%b==0)
{
d[top++] = 1;
return b;
}
else
{
d[top++] = a/b;
}
return gcd(b,a%b);
}
int main()
{
while(scanf("%d %d",&A,&B)==2)
{
if(A+B==0) break;
top = 0;
gcd(max(A,B),min(A,B));
pn[top-1] = 1;
for(int i=top-2;i>=0;i--)
{
if( pn[i+1] )
{
if( d[i]>1 ) pn[i] = 1;
else pn[i] = 0;
}
else
{
pn[i] = 1;
}
}
if( pn[0] ) printf("Stan wins\n");
else printf("Ollie wins\n");
}
return 0;
}