#include <iostream.h>

long pwr (long x, long y) {
  long ans = 1;
  bool bad = false;
  for (long lcv=0;lcv < y; lcv++) {
    ans *= x;
    if (ans > 99999) {
      bad = true;
      return(-5);
    }
  }
  return(ans);
}

void main (void) {
  long xyzt = 1000;
   long x,y,z,t,xy,zt,pk;
  for (xyzt=1000;xyzt<10000;xyzt++) {
    t = xyzt % 10;
    z = xyzt % 100 / 10;
    y = xyzt % 1000 / 100;
    x = xyzt / 1000;
    xy = pwr(x,y);
    zt = pwr(z,t);
    pk = xyzt-xy*zt;
    if (pk<0) pk = -pk; 
    if (
     (t != z) && (t != y) && (t != x) && (z != y) && (z != x) && (x != y) &&
     (xy != -5) && (zt != -5)) {
      cout <<pk << " "<< xyzt << " " << xy*zt << " " << xyzt-xy*zt << "\n";
    }
  }
}
