



import argparse
import hashlib  # hashlib is only used inside the Test class
import struct



class 	lowerCamelCase      :







					'''simple docstring'''







					def __init__(			self    ,	lowerCAmelCase     ):
							UpperCAmelCase_						=				data
							UpperCAmelCase_						=				[0x6745_2301, 0xEFCD_AB89, 0x98BA_DCFE, 0x1032_5476, 0xC3D2_E1F0]



					@staticmethod
					def    A__		(			lowerCAmelCase    ,	lowerCAmelCase     ):
							return ((n << b) | (n >> (32 - b))) & 0xFFFF_FFFF



					def    A__		(			self     ):
							UpperCAmelCase_						=				b"\x80" + b"\x00" * (63 - (len(self.data     ) + 8) % 64)
							UpperCAmelCase_						=				self.data + padding + struct.pack(">Q"    ,	8 * len(self.data     )     )
							return padded_data



					def    A__		(			self     ):
							return [
							    self.padded_data[i : i + 64] for i in range(0    ,	len(self.padded_data     )    ,	64     )
							]



					def    A__		(			self    ,	lowerCAmelCase     ):
							UpperCAmelCase_						=				list(struct.unpack(">16L"    ,	lowerCAmelCase     )     ) + [0] * 64
							for i in range(16    ,	80     ):
									UpperCAmelCase_						=				self.rotate((w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16])    ,	1     )
							return w



					def    A__		(			self     ):
							UpperCAmelCase_						=				self.padding()
							UpperCAmelCase_						=				self.split_blocks()
							for block in self.blocks:
									UpperCAmelCase_						=				self.expand_block(lowerCAmelCase     )
									UpperCAmelCase_					,						UpperCAmelCase_					,						UpperCAmelCase_					,						UpperCAmelCase_					,						UpperCAmelCase_						=				self.h
									for i in range(0    ,	80     ):
											if 0 <= i < 20:
													UpperCAmelCase_						=				(b & c) | ((~b) & d)
													UpperCAmelCase_						=				0x5A82_7999
											elif 20 <= i < 40:
													UpperCAmelCase_						=				b ^ c ^ d
													UpperCAmelCase_						=				0x6ED9_EBA1
											elif 40 <= i < 60:
													UpperCAmelCase_						=				(b & c) | (b & d) | (c & d)
													UpperCAmelCase_						=				0x8F1B_BCDC
											elif 60 <= i < 80:
													UpperCAmelCase_						=				b ^ c ^ d
													UpperCAmelCase_						=				0xCA62_C1D6
											UpperCAmelCase_					,						UpperCAmelCase_					,						UpperCAmelCase_					,						UpperCAmelCase_					,						UpperCAmelCase_						=				(
											    self.rotate(lowerCAmelCase    ,	5     ) + f + e + k + expanded_block[i] & 0xFFFF_FFFF,
											    a,
											    self.rotate(lowerCAmelCase    ,	30     ),
											    c,
											    d,
											)
									UpperCAmelCase_						=				(
									    self.h[0] + a & 0xFFFF_FFFF,
									    self.h[1] + b & 0xFFFF_FFFF,
									    self.h[2] + c & 0xFFFF_FFFF,
									    self.h[3] + d & 0xFFFF_FFFF,
									    self.h[4] + e & 0xFFFF_FFFF,
									)
							return ("{:08x}" * 5).format(*self.h     )







def snake_case__  (			)		->							int:
		UpperCAmelCase_						=				B"Test String"
		assert SHAaHash(__SCREAMING_SNAKE_CASE ).final_hash() == hashlib.shaa(__SCREAMING_SNAKE_CASE ).hexdigest()  # noqa: S324







def snake_case__  (			)		->							Any:
		UpperCAmelCase_						=				argparse.ArgumentParser(description="Process some strings or files" )
		parser.add_argument(
		    "--string"			,     dest="input_string"			,     default="Hello World!! Welcome to Cryptography"			,     help="Hash the string"			,     )
		parser.add_argument("--file"			,     dest="input_file"			,     help="Hash contents of a file" )
		UpperCAmelCase_						=				parser.parse_args()
		UpperCAmelCase_						=				args.input_string
		# In any case hash input should be a bytestring
		if args.input_file:
				with open(args.input_file			,     "rb" ) as f:
						UpperCAmelCase_						=				f.read()
		else:
				UpperCAmelCase_						=				bytes(__SCREAMING_SNAKE_CASE			,     "utf-8" )
		print(SHAaHash(__SCREAMING_SNAKE_CASE ).final_hash() )


if __name__ == "__main__":
			main()
			import doctest

			doctest.testmod()






def snake_case__  (			__SCREAMING_SNAKE_CASE )		->							int:
		UpperCAmelCase_						=				1
		for i in range(1			,     num + 1 ):
				fact *= i
		return fact







def snake_case__  (			__SCREAMING_SNAKE_CASE )		->							int:
		UpperCAmelCase_						=				0
		while number > 0:
				UpperCAmelCase_						=				number % 10
				sum_of_digits += last_digit
				UpperCAmelCase_						=				number // 10  # Removing the last_digit from the given number
		return sum_of_digits







def snake_case__  (			__SCREAMING_SNAKE_CASE = 100 )		->							int:
		UpperCAmelCase_						=				factorial(__SCREAMING_SNAKE_CASE )
		UpperCAmelCase_						=				split_and_add(__SCREAMING_SNAKE_CASE )
		return result


if __name__ == "__main__":
			print(solution(int(input("Enter the Number: ").strip())))

