diff --git a/ndp/main.py b/ndp/main.py
index fffdb9aafc650687467bf5c1357d2c5ad0fa9987..4084582905e65d05963dbbf72a71818efa51519f 100644
--- a/ndp/main.py
+++ b/ndp/main.py
@@ -1,7 +1,6 @@
 import matplotlib.pyplot as plt
 import numpy as np
 
-
 class Protocol:
     def __init__(self, name, c, n):
         self.name = name
@@ -19,11 +18,11 @@ class Protocol:
 
         slots = np.zeros(total_slots)
         for g in guardians:
-            slots[g] = 1  # Guardian slots
+            slots[g % total_slots] = 1  # Guardian slots
 
         for p in patrols:
-            if slots[p] == 0:  # Only mark patrol if not already a guardian
-                slots[p] = 2  # Patrol slots
+            if slots[p % total_slots] == 0:  # Only mark patrol if not already a guardian
+                slots[p % total_slots] = 2  # Patrol slots
 
         slots = slots.reshape(self.n, self.c)
 
@@ -35,15 +34,19 @@ class Protocol:
 
 class QuorumProtocol(Protocol):
     def schedule(self):
-        guardians = [i * self.c for i in range(self.n)]
+        guardians = [i % self.c for i in range(self.n)]
         patrols = [i for i in range(self.c) if i not in guardians]
         return {"Guardians": guardians, "Patrols": patrols}
 
 
 class DiscoProtocol(Protocol):
     def schedule(self):
+        # Generate guardians based on the formula i * c
         guardians = [i * self.c for i in range(self.n)]
+
+        # Generate patrols based on the formula j * n, excluding guardians
         patrols = [j * self.n for j in range(self.c) if j * self.n not in guardians]
+
         return {"Guardians": guardians, "Patrols": patrols}
 
 
@@ -57,20 +60,24 @@ class UConnectProtocol(Protocol):
 class SearchlightProtocol(Protocol):
     def schedule(self):
         guardians = [i * self.c for i in range(self.n)]
-        patrols = [(j * self.c + (j % (self.c // 2))) for j in range(self.n) if
+        patrols = [(j * self.c + (j % (self.c // 2))) for j in range(self.n * 2) if
                    (j * self.c + (j % (self.c // 2))) not in guardians]
-        return {"Guardians": guardians, "Patrols": patrols}
+        return {"Guardians": guardians, "Patrols": patrols[:self.n]}
+
 
+# Get user input for c and n
+c = int(input("Enter the number of slots per cycle (c): "))
+n = int(input("Enter the number of cycles (n): "))
 
 # Plot all protocols
 fig, axes = plt.subplots(4, 1, figsize=(12, 20), sharex=True)
 fig.subplots_adjust(hspace=0.4)
 
 protocols = [
-    QuorumProtocol("Quorum Protocol", 9, 3),
-    DiscoProtocol("Disco Protocol", 7, 5),
-    UConnectProtocol("U-Connect Protocol", 7, 7),
-    SearchlightProtocol("Searchlight Protocol", 7, 3)
+    QuorumProtocol("Quorum Protocol", c, n),
+    DiscoProtocol("Disco Protocol", c, n),
+    UConnectProtocol("U-Connect Protocol", c, n),
+    SearchlightProtocol("Searchlight Protocol", c, n)
 ]
 
 for i, protocol in enumerate(protocols):