Issue #18449: Make Tools/demo/ss1.py work again on Python 3.  Patch by
Févry Thibault.
diff --git a/Misc/ACKS b/Misc/ACKS
index 5707fdf..ebda56f 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1248,6 +1248,7 @@
 Victor Terrón
 Richard M. Tew
 Tobias Thelen
+Févry Thibault
 Lowe Thiderman
 Nicolas M. Thiéry
 James Thomas
diff --git a/Misc/NEWS b/Misc/NEWS
index 7b553ae..8e175b3 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -656,6 +656,9 @@
 Tools/Demos
 -----------
 
+- Issue #18449: Make Tools/demo/ss1.py work again on Python 3.  Patch by
+  Févry Thibault.
+
 - Issue #12990: The "Python Launcher" on OSX could not launch python scripts
   that have paths that include wide characters.
 
diff --git a/Tools/demo/ss1.py b/Tools/demo/ss1.py
index 71c9be8..dbe2705 100755
--- a/Tools/demo/ss1.py
+++ b/Tools/demo/ss1.py
@@ -79,10 +79,10 @@
             del self.cells[xy]
 
     def clearrows(self, y1, y2):
-        self.clearcells(0, y1, sys.maxint, y2)
+        self.clearcells(0, y1, sys.maxsize, y2)
 
     def clearcolumns(self, x1, x2):
-        self.clearcells(x1, 0, x2, sys.maxint)
+        self.clearcells(x1, 0, x2, sys.maxsize)
 
     def selectcells(self, x1, y1, x2, y2):
         if x1 > x2:
@@ -113,23 +113,23 @@
 
     def insertrows(self, y, n):
         assert n > 0
-        self.movecells(0, y, sys.maxint, sys.maxint, 0, n)
+        self.movecells(0, y, sys.maxsize, sys.maxsize, 0, n)
 
     def deleterows(self, y1, y2):
         if y1 > y2:
             y1, y2 = y2, y1
         self.clearrows(y1, y2)
-        self.movecells(0, y2+1, sys.maxint, sys.maxint, 0, y1-y2-1)
+        self.movecells(0, y2+1, sys.maxsize, sys.maxsize, 0, y1-y2-1)
 
     def insertcolumns(self, x, n):
         assert n > 0
-        self.movecells(x, 0, sys.maxint, sys.maxint, n, 0)
+        self.movecells(x, 0, sys.maxsize, sys.maxsize, n, 0)
 
     def deletecolumns(self, x1, x2):
         if x1 > x2:
             x1, x2 = x2, x1
         self.clearcells(x1, x2)
-        self.movecells(x2+1, 0, sys.maxint, sys.maxint, x1-x2-1, 0)
+        self.movecells(x2+1, 0, sys.maxsize, sys.maxsize, x1-x2-1, 0)
 
     def getsize(self):
         maxx = maxy = 0
@@ -626,29 +626,29 @@
 
     def selectall(self, event):
         self.setcurrent(1, 1)
-        self.setcorner(sys.maxint, sys.maxint)
+        self.setcorner(sys.maxsize, sys.maxsize)
 
     def selectcolumn(self, event):
         x, y = self.whichxy(event)
         self.setcurrent(x, 1)
-        self.setcorner(x, sys.maxint)
+        self.setcorner(x, sys.maxsize)
 
     def extendcolumn(self, event):
         x, y = self.whichxy(event)
         if x > 0:
             self.setcurrent(self.currentxy[0], 1)
-            self.setcorner(x, sys.maxint)
+            self.setcorner(x, sys.maxsize)
 
     def selectrow(self, event):
         x, y = self.whichxy(event)
         self.setcurrent(1, y)
-        self.setcorner(sys.maxint, y)
+        self.setcorner(sys.maxsize, y)
 
     def extendrow(self, event):
         x, y = self.whichxy(event)
         if y > 0:
             self.setcurrent(1, self.currentxy[1])
-            self.setcorner(sys.maxint, y)
+            self.setcorner(sys.maxsize, y)
 
     def press(self, event):
         x, y = self.whichxy(event)
@@ -709,14 +709,14 @@
         self.setbeacon(x1, y1, x2, y2)
 
     def setbeacon(self, x1, y1, x2, y2):
-        if x1 == y1 == 1 and x2 == y2 == sys.maxint:
+        if x1 == y1 == 1 and x2 == y2 == sys.maxsize:
             name = ":"
-        elif (x1, x2) == (1, sys.maxint):
+        elif (x1, x2) == (1, sys.maxsize):
             if y1 == y2:
                 name = "%d" % y1
             else:
                 name = "%d:%d" % (y1, y2)
-        elif (y1, y2) == (1, sys.maxint):
+        elif (y1, y2) == (1, sys.maxsize):
             if x1 == x2:
                 name = "%s" % colnum2name(x1)
             else: