#include <stdio.h>
/* 注意各类不合法的 IP
超过 0-255
01.2.3.4
注意:0.2.3.4 是合法IP
*/
int main()
{
char ip[20] = {0};
while(scanf("%s", ip) != EOF)
{
char *split = strtok(ip, ".");
int num = -1;
int index = 0;
int flag = 0;
while(split != NULL)
{
num = 0;
int tmp_flag = 1;
/* 排除 01.2.4.5 情况IP */
if(strlen(split) >= 2 && split[0] == '0' && split[1] != '0')
{
tmp_flag = 0;
break;
}
else
{
/* 获取当前IP数字 */
for(int i = 0; i < strlen(split); i++)
{
num = num * 10 + (split[i] - '0');
}
}
/* 0-255 以内数据为合法 */
if(num >= 0 && num <= 255)
{
flag = 1;
}
else
{
flag = 0;
break;
}
index++;
split = strtok(NULL, ".");
}
/* 数据合法且 仅为32位数据 4 * 8 = 32 */
if(flag && index == 4)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}