#include<iostream>
#define maxn 999
using namespace std;
int judge(char s[],int len)
{
if(len<7||len>15||s[0]=='.'||s[len-1]=='.')//檢查長度和首、尾
return 0;
for(int i=0;s[i]!='\0';i++)//檢查是否只有.和數字
{
if(s[i]!='.')
{
if('9'<s[i]||s[i]<'0')
return 0;
}
}
int ct=0;
for(int i=0;s[i+1]!='\0';i++)//檢查.的個數,且不能有連續的.
{
if(s[i]=='.')
ct++;
if(s[i]=='.'&&s[i+1]=='.')
return 0;
}
if(ct!=3)
return 0;
int k=0,sum[4],flag=0;
for(int i=0;s[i]!='\0';i++)//轉換數值
{
int temp=0;
while(s[i]!='.')
{
temp=(temp*10+int(s[i]-'0'));
i++;
if(s[i]=='\0')
{
flag=1;
break;
}
if(flag)
break;
}
sum[k++]=temp;
}
for(int i=0;i<4;i++)//數值必須在0-225之間
if(0>sum[i]||sum[i]>255)
return 0;
return 1;
}
int main()
{
char str[maxn];
int len=0;
scanf("%s",str);
for(int i=0;str[i]!='\0';i++)
len++;
if(judge(str,len))
cout<<"合法"<<endl;
else
cout<<"不合法"<<endl;
}