code: def modExp(a, d, n):
      
      assert d >= 0
      assert n >= 0
      base2D = int2baseTwo(d)
      base2DLength = len(base2D)
      modArray = []
      result = 1
      for i in range(1, base2DLength + 1):
          if i == 1:
              modArray.append(a % n)
          else:
              modArray.append((modArray[i - 2] ** 2) % n)
      for i in range(0, base2DLength):
          if base2D[i] == 1:
              result *= base2D[i] * modArray[i]
      return result % n
docs: returns a ** d (mod n)