





def 	UpperCamelCase__(       UpperCamelCase__			:       Tuple  )->bool:
       A__											=						[int(_lowerCAmelCase  ) for i in ip_va_address.split('''.'''  ) if i.isdigit()]
       return len(_lowerCAmelCase  ) == 4 and all(0 <= int(_lowerCAmelCase  ) <= 2_54 for octet in octets  )


if __name__ == "__main__":
       a__:      List[str]									=		input().strip()
       a__:      Optional[Any]									=		"""valid""" if is_ip_va_address_valid(ip) else """invalid"""
       print(F"{ip} is a {valid_or_invalid} IP v4 address.")












from __future__ import annotations

from functools import lru_cache
from math import ceil

__lowerCamelCase       :     str   =     100

__lowerCamelCase       :     Any   =     set(range(3, NUM_PRIMES, 2))
primes.add(2)
__lowerCamelCase       :     int

for prime in range(3, ceil(NUM_PRIMES**0.5), 2):
    if prime not in primes:
        continue
    primes.difference_update(set(range(prime * prime, NUM_PRIMES, prime)))



@lru_cache(maxsize=100     )
def 		A_				(     _lowerCAmelCase     )						-> set[int]:
 if number_to_partition < 0:
  return set()
 elif number_to_partition == 0:
  return {1}

 UpperCamelCase	:					set[int]       	=   set()
 UpperCamelCase	:					int
 UpperCamelCase	:					int

 for prime in primes:
  if prime > number_to_partition:
   continue
  for sub in partition(number_to_partition - prime     ):
   ret.add(sub * prime     )

 return ret



def 		A_				(     _lowerCAmelCase = 5000     )						-> int | None:
 for number_to_partition in range(1							,   _lowerCAmelCase     ):
  if len(partition(_lowerCAmelCase     )     ) > number_unique_partitions:
   return number_to_partition
 return None


if __name__ == "__main__":
    print(f"""{solution() = }""")
