(lambda (b p m) (let me ((p p))(cond ((= p 0) 1) ((even? p)(let ((x (me (arithmetic-shift p -1))))(modulo (* x x) m))) (#t (modulo (* b (me (- p 1))) m)))))