#include<bits/stdc++.h>
using namespace std;
int stringtoint(string str) {    //自定义将string转化为int的函数
    return stoi(str.c_str());
}
bool judge(int x) {    //判断当前数字是否为0~255
    return x>=0&&x<=255;
}
vector<int> split(string str, char ch) {    //字符串分割函数,并将分割后的字符串转化为整型,结果用vector<int>类型返回
    stringstream ss(str);
    vector<string> vec;
    string temp;
    while(getline(ss, temp, ch))
        vec.push_back(temp);
    vector<int> output;
    transform(vec.begin(), vec.end(), back_inserter(output), stringtoint);    //transform函数将序列中的每个元素施加transform变换,然后将结果保存到另一个序列中
    return output;
}
int main() {
    string str;
    while(getline(cin, str)) {
        vector<int> vec = split(str, '\.');    //vec中存放ip地址中每个部分的整型值
        if(!all_of(vec.begin(), vec.end(), judge))    //判断vec中是否所有元素都满足judge函数的判断条件
            cout<<"NO"<<endl;
        else
            cout<<"YES"<<endl;
    }
    return 0;
}