#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;
}