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