






from __future__ import annotations





def 						A_					(						lowercase_			)				->set[int]:







 """simple docstring"""

 SCREAMING_SNAKE_CASE				    =		{1}
 SCREAMING_SNAKE_CASE				    =		[1]
 for _ in range(2	,  depth + 1			):
  SCREAMING_SNAKE_CASE				    =		[*previous_coefficients, 0]
  SCREAMING_SNAKE_CASE				    =		[0, *previous_coefficients]
  SCREAMING_SNAKE_CASE				    =		[]
  for x, y in zip(lowercase_	,  lowercase_			):
   coefficients.add(x + y			)
   previous_coefficients.append(x + y			)
 return coefficients





def 						A_					(						lowercase_			)				->set[int]:







 """simple docstring"""

 SCREAMING_SNAKE_CASE				    =		set()
 for number in unique_coefficients:
  SCREAMING_SNAKE_CASE				    =		2
  SCREAMING_SNAKE_CASE				    =		number
  while divisor**2 <= copy_number:
   SCREAMING_SNAKE_CASE				    =		0
   while copy_number % divisor == 0:
    copy_number //= divisor
    multiplicity += 1
   if multiplicity >= 2:
    non_squarefrees.add(lowercase_			)
    break
   divisor += 1

 return unique_coefficients.difference(lowercase_			)





def 						A_					(						lowercase_ = 5_1			)				->int:







 """simple docstring"""

 SCREAMING_SNAKE_CASE				    =		get_pascal_triangle_unique_coefficients(lowercase_			)
 SCREAMING_SNAKE_CASE				    =		get_squarefrees(lowercase_			)
 return sum(lowercase_			)


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








'''simple docstring'''


import torch
from torch import autograd






class 						lowerCAmelCase__      (      autograd.Function						):




			@staticmethod
			def 				lowerCAmelCase__     (		lowerCamelCase__	:  Optional[int]						,	lowerCamelCase__	:  torch.tensor						,	lowerCamelCase__	:  float						,	lowerCamelCase__	:  bool			) ->Optional[Any]:



					'''simple docstring'''







					_UpperCAmelCase		:							Optional[int]             =   inputs.numel()
					_UpperCAmelCase		:							Any             =   int(0.0_0_5 * nb_elems			) + 1
					if sigmoid:
							_UpperCAmelCase		:							List[str]             =   (torch.sigmoid(lowerCamelCase__			) > threshold).type(inputs.type()			)
					else:
							_UpperCAmelCase		:							List[Any]             =   (inputs > threshold).type(inputs.type()			)
					if mask.sum() < nb_min:
							# We limit the pruning so that at least 0.5% (half a percent) of the weights are remaining
							_UpperCAmelCase		:							str             =   inputs.flatten().kthvalue(max(nb_elems - nb_min						,	1			)			).values
							_UpperCAmelCase		:							str             =   (inputs > k_threshold).type(inputs.type()			)
					return mask






			@staticmethod
			def 				lowerCAmelCase__     (		lowerCamelCase__	:  List[Any]						,	lowerCamelCase__	:  Optional[int]			) ->Dict:



					'''simple docstring'''







					return gradOutput, None, None






class 						lowerCAmelCase__      (      autograd.Function						):




			@staticmethod
			def 				lowerCAmelCase__     (		lowerCamelCase__	:  Optional[int]						,	lowerCamelCase__	:  torch.tensor						,	lowerCamelCase__	:  float			) ->List[str]:



					'''simple docstring'''







					_UpperCAmelCase		:							Optional[int]             =   inputs.clone()
					_UpperCAmelCase       ,     _UpperCAmelCase		:							Tuple             =   inputs.flatten().sort(descending=lowerCamelCase__			)
					_UpperCAmelCase		:							Optional[int]             =   int(threshold * inputs.numel()			)

					# flat_out and mask access the same memory.
					_UpperCAmelCase		:							str             =   mask.flatten()
					_UpperCAmelCase		:							Optional[int]             =   0
					_UpperCAmelCase		:							Optional[Any]             =   1
					return mask






			@staticmethod
			def 				lowerCAmelCase__     (		lowerCamelCase__	:  Optional[int]						,	lowerCamelCase__	:  Any			) ->Union[str, Any]:



					'''simple docstring'''







					return gradOutput, None






class 						lowerCAmelCase__      (      UpperCAmelCase__						):




			@staticmethod
			def 				lowerCAmelCase__     (		lowerCamelCase__	:  torch.tensor						,	lowerCamelCase__	:  float			) ->Tuple:



					'''simple docstring'''







					_UpperCAmelCase		:							List[Any]             =   inputs.clone()
					_UpperCAmelCase       ,     _UpperCAmelCase		:							Optional[Any]             =   inputs.abs().flatten().sort(descending=lowerCamelCase__			)
					_UpperCAmelCase		:							int             =   int(threshold * inputs.numel()			)

					# flat_out and mask access the same memory.
					_UpperCAmelCase		:							int             =   mask.flatten()
					_UpperCAmelCase		:							List[Any]             =   0
					_UpperCAmelCase		:							int             =   1
					return mask



