--- xlib_bw_120x80.c	2026-01-13 22:14:56.733931548 +0100
+++ xlib_bw_120x80r.c	2026-01-22 18:52:37.277203609 +0100
@@ -147,6 +147,8 @@
   { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
 };
 
+#define N_CLB 28
+
 struct _clic {
   int x;
   int y;
@@ -191,30 +193,24 @@
 void
 find_collectible()
 {
+  int clbs_ndx[N_CLB];
+  int n;
+  n = 0;
+  for (int d = 0; d < sizeof(collectibles) / sizeof(struct _clb); d++) {
+    struct _clb *clb = &collectibles[d];
+    if (clb->x != -1 && clb->y != -1) {
+      clbs_ndx[n] = d;
+      n++ ;
+    }
+  }
+
   for (int e = 0; e < sizeof(elems) / sizeof(struct _elem); e++) {
     struct _elem *elm = &elems[e];
-    int d;
-    for (d = 0; d < sizeof(collectibles) / sizeof(struct _clb); d++) {
-      struct _clb *clb = &collectibles[d];
-      if (clb->x == -1 && clb->y == -1) continue ;
-      elm->dx = clb->x;
-      elm->dy = clb->y;
-      break ;
-    }
-    if (elm->dx != -1 && elm->dy != -1) {
-      for (int l = d+1; l < sizeof(collectibles) / sizeof(struct _clb); l++) {
-        struct _clb *clb = &collectibles[l];
-        int n1;
-        int n2;
-        if (clb->x == -1 && clb->y == -1) continue ;
-        n1 = mana_dist(elm->x, elm->y, elm->dx, elm->dy);
-        n2 = mana_dist(elm->x, elm->y, clb->x, clb->y);
-        if (n2 < n1) {
-          elm->dx = clb->x;
-          elm->dy = clb->y;
-        }
-      }
-    }
+    int d = rand() % (n);
+    int l = clbs_ndx[d];
+    struct _clb *clb = &collectibles[l];
+    elm->dx = clb->x;
+    elm->dy = clb->y;
   }
 }
 
