import math
import time
lower1 = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
# __________________________________________________________________________
def start2(h):
   global lower1
   ai = ""
   for i in range(6):
      ai += "777"
   for i in range(100):
      ai += "777"
      a = int(ai)
      lower2 = "1"
      for j in range(1000):
         lower2 += "0"
      lower1 = int(lower2)
      #lower1 = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
      for d in range(1000):
         sumcube(a,a-1-d,d)
      print ("----------")
#____________________________________________________________________________
def sumcube(ah,bh,dd):
   global lower1
   lower = lower1
   a = int(ah)
   b = int(bh)
   ac = a * a * a
   bc = b * b * b
   d = ac - bc
   c = root(d,3)
   if c != ah:  
      cc = c * c * c
      d2 = d - cc
      c2 = c + 1;
      c2c = c2 * c2 * c2;
      d3 = c2c - d;
      if (d2 < lower):
         lower = d2
         print (str(len(str(ah))) + " " + str(dd) + " " + str(ah) + " ^ 3 - " + str(bh) + " ^ 3 - " + str(c) + " ^ 3 = " + str(d2) + " " + str(len(str(d2))))
      if (c2 != ah):
         if (d3 < lower):
            lower = d3
            print (str(len(str(ah))) + " " + str(dd) + " " + str(ah) + " ^ 3 - " + str(bh) + " ^ 3 - " + str(c2) + " ^ 3 = -" + str(d3) + " " + str(len(str(d3))))
      lower1 = lower
# ___________________________________________________________________________
def root(d, factor):
   min = 0
   max = 1
   f = 1
   for i in range(1000):
      g = factorit(f,factor)
      if g == d:
         return(f);
      else:
         if g > d:
            max = f
            break;
         else:
            min = f
            f *= 2
   for i in range(1000):
      f1 = min + max
      f = f1 // 2;
      if (f == min) | (f == max):
         break;
      g = factorit(f,factor)
      if g == d:
         break;
      else:
         if g > d:
            max = f
         else:
            min = f
   g = factorit(f,factor)
   if g > d:
      print("ERROR A ",f," ",d," ",g);
   f2 = f + 1;
   g = factorit(f2,factor);
   if d > g:
      print("ERROR B ",f," ",d," ",g); 
   return(f);
# ___________________________________________________________________________
def factorit(f, times):
   ans = 1
   for i in range(times):
      ans *= f
   return ans
#___________________________________________________________________________
start_time = time.time()
start2(1)
elapsed_time = time.time() - start_time;
print(elapsed_time);
# ___________________________________________________________________________