#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
using namespace std;
bool A(const string& e) {
size_t p1 = e.find('@');
if (p1 == string::npos || e.rfind('@') != p1) {
return false;
}
if (p1 == 0 || p1 == e.length() - 1) {
return false;
}
size_t p2 = e.find('.', p1);
if (p2 == string::npos || p2 == p1 + 1 || p2 == e.length() - 1) {
return false;
}
for (char c : e) {
if (c != '@' && c != '.') {
if (!islower(c)) {
return false;
}
}
}
return true;
}
bool B(const string& p) {
if (p.length() < 8) {
return false;
}
bool l = false;
bool u = false;
bool d = false;
bool s = false;
const string y = "!@#%&*_-.";
for (char c : p) {
if (islower(c)) {
l = true;
} else if (isupper(c)) {
u = true;
} else if (isdigit(c)) {
d = true;
} else if (y.find(c) != string::npos) {
s = true;
}
if (l && u && d && s) {
return true;
}
}
return l && u && d && s;
}
int main() {
string e, p;
if (!(cin >> e >> p)) {
return 0;
}
if (A(e) && B(p)) {
cout << "Valid" << endl;
} else {
cout << "InValid" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y2N0eXBlPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpib29sIEEoY29uc3Qgc3RyaW5nJiBlKSB7CiAgICBzaXplX3QgcDEgPSBlLmZpbmQoJ0AnKTsKICAgIGlmIChwMSA9PSBzdHJpbmc6Om5wb3MgfHwgZS5yZmluZCgnQCcpICE9IHAxKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgaWYgKHAxID09IDAgfHwgcDEgPT0gZS5sZW5ndGgoKSAtIDEpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKICAgIHNpemVfdCBwMiA9IGUuZmluZCgnLicsIHAxKTsKICAgIGlmIChwMiA9PSBzdHJpbmc6Om5wb3MgfHwgcDIgPT0gcDEgKyAxIHx8IHAyID09IGUubGVuZ3RoKCkgLSAxKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICBmb3IgKGNoYXIgYyA6IGUpIHsKICAgICAgICBpZiAoYyAhPSAnQCcgJiYgYyAhPSAnLicpIHsKICAgICAgICAgICAgaWYgKCFpc2xvd2VyKGMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKIApib29sIEIoY29uc3Qgc3RyaW5nJiBwKSB7CiAgICBpZiAocC5sZW5ndGgoKSA8IDgpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgYm9vbCBsID0gZmFsc2U7IAogICAgYm9vbCB1ID0gZmFsc2U7IAogICAgYm9vbCBkID0gZmFsc2U7IAogICAgYm9vbCBzID0gZmFsc2U7IAoKICAgIGNvbnN0IHN0cmluZyB5ID0gIiFAIyUmKl8tLiI7CgogICAgZm9yIChjaGFyIGMgOiBwKSB7CiAgICAgICAgaWYgKGlzbG93ZXIoYykpIHsKICAgICAgICAgICAgbCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChpc3VwcGVyKGMpKSB7CiAgICAgICAgICAgIHUgPSB0cnVlOwogICAgICAgIH0gZWxzZSBpZiAoaXNkaWdpdChjKSkgewogICAgICAgICAgICBkID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgaWYgKHkuZmluZChjKSAhPSBzdHJpbmc6Om5wb3MpIHsKICAgICAgICAgICAgcyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChsICYmIHUgJiYgZCAmJiBzKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbCAmJiB1ICYmIGQgJiYgczsKfQoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgZSwgcDsKCiAgICBpZiAoIShjaW4gPj4gZSA+PiBwKSkgewogICAgICAgIHJldHVybiAwOyAKICAgIH0KCiAgICBpZiAoQShlKSAmJiBCKHApKSB7CiAgICAgICAgY291dCA8PCAiVmFsaWQiIDw8IGVuZGw7CiAgICB9IGVsc2UgewogICAgICAgIGNvdXQgPDwgIkluVmFsaWQiIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=