






from __future__ import annotations






def 				lowerCamelCase__      (    __lowerCamelCase			:     float  ,		__lowerCamelCase			:     float  ,		__lowerCamelCase			:     float  ,		):
  if (electron_conc, hole_conc, intrinsic_conc).count(0		) != 1:
    raise ValueError("""You cannot supply more or less than 2 values"""		)
  elif electron_conc < 0:
    raise ValueError("""Electron concentration cannot be negative in a semiconductor"""		)
  elif hole_conc < 0:
    raise ValueError("""Hole concentration cannot be negative in a semiconductor"""		)
  elif intrinsic_conc < 0:
    raise ValueError(
        """Intrinsic concentration cannot be negative in a semiconductor"""		)
  elif electron_conc == 0:
    return (
        "electron_conc",
        intrinsic_conc**2 / hole_conc,
    )
  elif hole_conc == 0:
    return (
        "hole_conc",
        intrinsic_conc**2 / electron_conc,
    )
  elif intrinsic_conc == 0:
    return (
        "intrinsic_conc",
        (electron_conc * hole_conc) ** 0.5,
    )
  else:
    return (-1, -1)


if __name__ == "__main__":
       import doctest

       doctest.testmod()










from functools import lru_cache






@lru_cache
def 				lowerCamelCase__      (    __lowerCamelCase			:     int		):
  if num < 0:
    raise ValueError("""Number should not be negative."""		)

  return 1 if num in (0, 1) else num * factorial(num - 1		)


if __name__ == "__main__":
       import doctest

       doctest.testmod()


