def getCheckSum(n):
a = str(n)
a = a[len(a)-1]
return int(a)
def getParts(n):
a = str(n)
b = 0
c = []
while b < len(a) - 1:
c.append(a[b])
b += 1
return c
def multTwo(n):
length = len(n)
if length % 2 == 0:
a = 1
else:
a = 0
c = n
while a < length:
c[a] = int(c[a])
c[a] *= 2
a += 2
return c
def sumAll(n):
a = 0
c = n
while a < len(c):
b = []
x = 0
c[a] = str(c[a])
while x < len(c[a]):
b.append(c[a][x])
x += 1
x = 0
y = 0
while x < len(b):
y += int(b[x])
x += 1
c[a] = y
a += 1
return (9 * sum(c)) % 10
def isValid(n):
checkSum = getCheckSum(n)
parts = getParts(n)
parts = multTwo(parts)
sumOfAll = sumAll(parts)
if sumOfAll == checkSum:
return True
else:
return False
def notValid(n):
a = str(n)
b = []
c = 0
while c < len(a):
b.append(a[c])
b[c] = int(b[c])
c += 1
c = 0
while c < len(b):
x = False
b[c] += 1
if b[c] == 10:
x = True
b[c] = 0
d = 0
e = ""
while d < len(b):
e += str(b[d])
d += 1
yesno = isValid(e)
if yesno:
return e
b[c] -= 2
if x:
b[c] = 8
x = False
if b[c] == -1:
x = True
b[c] = 9
d = 0
e = ""
while d < len(b):
e += str(b[d])
d += 1
yesno = isValid(e)
if yesno:
return e
b[c] += 1
if x:
b[c] = 0
c += 1
def main():
datas = []
answers = []
valids = []
a = 0
while a < 5:
datas.append(input())
if isValid(datas[a]):
valids.append("VALID")
else:
valids.append(notValid(datas[a]))
a += 1
a = 0
while a < 5:
print valids[a]
a += 1
main()
ZGVmIGdldENoZWNrU3VtKG4pOgoJYSA9IHN0cihuKQoJYSA9IGFbbGVuKGEpLTFdCglyZXR1cm4gaW50KGEpCgpkZWYgZ2V0UGFydHMobik6CglhID0gc3RyKG4pCgliID0gMAoJYyA9IFtdCgl3aGlsZSBiIDwgbGVuKGEpIC0gMToKCQljLmFwcGVuZChhW2JdKQoJCWIgKz0gMQoJcmV0dXJuIGMKCmRlZiBtdWx0VHdvKG4pOgoJbGVuZ3RoID0gbGVuKG4pCglpZiBsZW5ndGggJSAyID09IDA6CgkJYSA9IDEKCWVsc2U6CgkJYSA9IDAKCWMgPSBuCgl3aGlsZSBhIDwgbGVuZ3RoOgoJCWNbYV0gPSBpbnQoY1thXSkKCQljW2FdICo9IDIKCQlhICs9IDIKCXJldHVybiBjCgpkZWYgc3VtQWxsKG4pOgoJYSA9IDAKCWMgPSBuCgl3aGlsZSBhIDwgbGVuKGMpOgoJCWIgPSBbXQoJCXggPSAwCgkJY1thXSA9IHN0cihjW2FdKQoJCXdoaWxlIHggPCBsZW4oY1thXSk6CgkJCWIuYXBwZW5kKGNbYV1beF0pCgkJCXggKz0gMQoJCXggPSAwCgkJeSA9IDAKCQl3aGlsZSB4IDwgbGVuKGIpOgoJCQl5ICs9IGludChiW3hdKQoJCQl4ICs9IDEKCQljW2FdID0geQoJCWEgKz0gMQoJcmV0dXJuICg5ICogc3VtKGMpKSAlIDEwCgpkZWYgaXNWYWxpZChuKToKCWNoZWNrU3VtID0gZ2V0Q2hlY2tTdW0obikKCXBhcnRzID0gZ2V0UGFydHMobikKCXBhcnRzID0gbXVsdFR3byhwYXJ0cykKCXN1bU9mQWxsID0gc3VtQWxsKHBhcnRzKQoJaWYgc3VtT2ZBbGwgPT0gY2hlY2tTdW06CgkJcmV0dXJuIFRydWUKCWVsc2U6CgkJcmV0dXJuIEZhbHNlCgpkZWYgbm90VmFsaWQobik6CglhID0gc3RyKG4pCgliID0gW10KCWMgPSAwCgl3aGlsZSBjIDwgbGVuKGEpOgoJCWIuYXBwZW5kKGFbY10pCgkJYltjXSA9IGludChiW2NdKQoJCWMgKz0gMQoJYyA9IDAKCXdoaWxlIGMgPCBsZW4oYik6CgkJeCA9IEZhbHNlCgkJYltjXSArPSAxCgkJaWYgYltjXSA9PSAxMDoKCQkJeCA9IFRydWUKCQkJYltjXSA9IDAKCQlkID0gMAoJCWUgPSAiIgoJCXdoaWxlIGQgPCBsZW4oYik6CgkJCWUgKz0gc3RyKGJbZF0pCgkJCWQgKz0gMQoJCXllc25vID0gaXNWYWxpZChlKQoJCWlmIHllc25vOgoJCQlyZXR1cm4gZQoJCWJbY10gLT0gMgoJCWlmIHg6CgkJCWJbY10gPSA4CgkJCXggPSBGYWxzZQoJCWlmIGJbY10gPT0gLTE6CgkJCXggPSBUcnVlCgkJCWJbY10gPSA5CgkJZCA9IDAKCQllID0gIiIKCQl3aGlsZSBkIDwgbGVuKGIpOgoJCQllICs9IHN0cihiW2RdKQoJCQlkICs9IDEKCQl5ZXNubyA9IGlzVmFsaWQoZSkKCQlpZiB5ZXNubzoKCQkJcmV0dXJuIGUKCQliW2NdICs9IDEKCQlpZiB4OgoJCQliW2NdID0gMAoJCWMgKz0gMQoKZGVmIG1haW4oKToKCWRhdGFzID0gW10KCWFuc3dlcnMgPSBbXQoJdmFsaWRzID0gW10KCWEgPSAwCgl3aGlsZSBhIDwgNToKCQlkYXRhcy5hcHBlbmQoaW5wdXQoKSkKCQlpZiBpc1ZhbGlkKGRhdGFzW2FdKToKCQkJdmFsaWRzLmFwcGVuZCgiVkFMSUQiKQoJCWVsc2U6CgkJCXZhbGlkcy5hcHBlbmQobm90VmFsaWQoZGF0YXNbYV0pKQoJCWEgKz0gMQoJYSA9IDAKCXdoaWxlIGEgPCA1OgoJCXByaW50IHZhbGlkc1thXQoJCWEgKz0gMQoKbWFpbigp