




import os

# Precomputes a list of the 100 first triangular numbers
lowerCamelCase							:						Tuple					       =  [int(0.5 * n * (n + 1)) for n in range(1, 101)]

def      _SCREAMING_SNAKE_CASE     (				):


      '''simple docstring'''



      lowerCamelCase_							=       os.path.dirname(os.path.realpath(lowercase	)	)
      lowerCamelCase_							=       os.path.join(lowercase      ,				'words.txt'	)

      lowerCamelCase_							=       ''
      with open(lowercase	) as f:
            lowerCamelCase_							=       f.readline()

      lowerCamelCase_							=       [word.strip('"'	) for word in words.strip('\r\n'	).split(','	)]
      lowerCamelCase_							=       [
          word
          for word in [sum(ord(lowercase	) - 64 for x in word	) for word in words]
          if word in TRIANGULAR_NUMBERS
      ]
      return len(lowercase	)


if __name__ == "__main__":
 print(solution())





"""simple docstring"""

def      lowercase__    (       lowerCAmelCase					:       str			)			->   bool:






    """simple docstring"""




    UpperCAmelCase          =       [int(lowerCAmelCase			) for i in ip_va_address.split('.'			) if i.isdigit()]
    return len(lowerCAmelCase			) == 4 and all(0 <= int(lowerCAmelCase			) <= 254 for octet in octets			)


if __name__ == "__main__":
   SCREAMING_SNAKE_CASE_            =    input().strip()
   SCREAMING_SNAKE_CASE_            =    '''valid''' if is_ip_va_address_valid(ip) else '''invalid'''
   print(F'{ip} is a {valid_or_invalid} IP v4 address.')



