diff --git a/src/Cluster.hs b/src/Cluster.hs
index 284904693bc5a636044f82becd586d26cc8ad045..7b69ef5dced5aff609b3da78123787d8f8ec2b52 100644
--- a/src/Cluster.hs
+++ b/src/Cluster.hs
@@ -573,8 +573,9 @@ printSolutionLine :: InstanceList
               -> Int
               -> Int
               -> Placement
+              -> Int
               -> (String, [String])
-printSolutionLine il ktn kti nmlen imlen plc =
+printSolutionLine il ktn kti nmlen imlen plc pos =
     let
         pmlen = (2*nmlen + 1)
         (i, p, s, c) = plc
@@ -588,8 +589,8 @@ printSolutionLine il ktn kti nmlen imlen plc =
         ostr = (printf "%s:%s" opri osec)::String
         nstr = (printf "%s:%s" npri nsec)::String
     in
-      (printf "  %-*s %-*s => %-*s %.8f a=%s"
-       imlen inam pmlen ostr
+      (printf "  %3d. %-*s %-*s => %-*s %.8f a=%s"
+       pos imlen inam pmlen ostr
        pmlen nstr c moves,
        cmds)
 
@@ -612,7 +613,8 @@ printSolution il ktn kti sol =
         imlen = mlen_fn kti
         nmlen = mlen_fn ktn
     in
-      unzip $ map (printSolutionLine il ktn kti nmlen imlen) sol
+      unzip $ map (uncurry $ printSolutionLine il ktn kti nmlen imlen) $
+            zip sol [1..]
 
 -- | Print the node list.
 printNodes :: [(Int, String)] -> NodeList -> String
diff --git a/src/hbal.hs b/src/hbal.hs
index 4d100e20d441ee02eae87dbd62a1ee66989fa473..b425f9265de1dbd2fa670aa76d44b5f5037afa7a 100644
--- a/src/hbal.hs
+++ b/src/hbal.hs
@@ -72,7 +72,7 @@ iterateDepth ini_tbl max_rounds ktn kti nmlen imlen cmd_strs oneline =
       do
         let
             (sol_line, cmds) = Cluster.printSolutionLine ini_il ktn kti
-                               nmlen imlen (head fin_plc)
+                               nmlen imlen (head fin_plc) fin_plc_len
             upd_cmd_strs = cmds:cmd_strs
         unless (oneline || fin_plc_len == ini_plc_len) $ do
           putStrLn sol_line