(define (expm b e m)
(define (m* x y) (modulo (* x y) m))
(cond ((zero? e) 1)
((even? e) (expm (m* b b) (/ e 2) m))
(else (m* b (expm (m* b b) (/ (- e 1) 2) m)))))
(define e 115105082845783711348555833467084328885033077093575665648358791981033999422035485929692301590071795109511941956433805642862048150041737737688505869864198340021996015027874600488431679007436099148923510410713254765191510138663679092069406720473185013825496284309360383970019326401502361991629884421754801969953004567765027989654763936395572875750494023660476026360980528841799078882436025185008159201865052540277169601839)
(define m 245246644900278211976517663573088018467026787678332759743414451715061600830038587216952208399332071549103626827191679864079776723243005600592035631246561218465817904100131859299619933817012149335034875870551067)
(display (expm 2 e m))