1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
#include<iostream>
#include<stdio.h>
#include<string>
#include<cstdlib>
#include<math.h>
#include<vector>
#define prt(a) printf("%d\n",a);
#define aaa printf("a\n");
#define bbb printf("b\n");
#define ccc printf("c\n");

typedef long long int LL;

using namespace std;

int*p;
#define pdl 78499
int*d;
int ddl=0;
void znajdz_pierwsze();
bool sprawdz(LL&a,LL&b);
void odczyt(LL&a,LL&b,int n);

int main()
{
	p=new int[pdl+10];
	znajdz_pierwsze();
	//for(int*w=p;w<p+pdl;w++)  printf("%d ",*w);
    d=new int[15];
    while((cin.peek()>=48)&&(cin.peek()<58))
    {
        d[ddl]=getchar()-48;
        ddl++;
    }
    LL a,b;
    odczyt(a,b,0);
    //printf("%lld %lld\n",a,b);
    if(sprawdz(a,b)==true)
    {
        printf("TAK");
        return 0;
    }
    for(int i=1;i<ddl-1;i++)
    {
        odczyt(a,b,i);
        //printf("%lld %lld\n",a,b);
        if(sprawdz(a,b)==true)
        {
            printf("TAK");
            return 0;
        }
    }
    printf("NIE");
	delete[]p;
	delete[]d;
	return 0;
}

void znajdz_pierwsze()
{
    char*o=new char[1000010];
    for(char*w=o+1000010;w>=o;w--)   *w=1;
    for(char*w=o+2;(w-o)*(w-o)<1000010;w++)
        if(*w!=0)
            for(char*ww=o+2*(w-o);ww<o+1000010;ww+=(w-o))     *ww=0;
    int*wp=p;
    for(char*w=o+2;w<o+1000010;w++)
        if(*w==1)
        {
            *wp=w-o;
            wp++;
        }
    delete[]o;
}

bool sprawdz(LL&a,LL&b)
{
    if((a==0)||(b==0)||(a==1)||(b==1))  return false;
    int*w=p;
    LL mx=(a>b)?a:b,mi=(a<b)?a:b;
    for(;*w**w<=mi;w++)
        if((a%*w==0)||(b%*w==0))    return false;
    for(;*w**w<=mx;w++)
        if(mx%*w==0)    return false;
    return true;
}

void odczyt(LL&a,LL&b,int n)
{
    a=0;
    b=0;
    int i=0;
    for(;i<=n;i++)
    {
        a*=10;
        a+=*(d+i);
    }
    if(*(d+i)==0)   return; //zera wiodace
    for(;i<ddl;i++)
    {
        b*=10;
        b+=*(d+i);
    }
}