diff --git a/testes/hld-ps.cpp b/testes/hld-ps.cpp
index e1f4bbf315b83860e14b6c6a4a862084505a493e..944e6c7125954f3cb6891b8afdb8f855cba29b47 100644
--- a/testes/hld-ps.cpp
+++ b/testes/hld-ps.cpp
@@ -8,7 +8,7 @@ const int N = 1e5+15;
 vector<vector<ii>> g (N);
 
 #define OP(X, Y) ((X) + (Y))
-#include "../fontes/prefix-sum.h"
+#include "../fontes/excluded/prefix-sum.h"
 #define op_inclusive sum_inclusive
 #include "../fontes/hld.h"
 
@@ -26,7 +26,7 @@ int main() {
       g[b].push_back(ii(a, t));
     }
 
-    hld_init(0);
+    hld_init(0, n);
 
     bool first = true;
     int q; cin >> q;
diff --git a/testes/lstit.cpp b/testes/lstit.cpp
index ccf0cebbcaf9d7cdfe070f497df09296ab7da40e..0ff33050f4577a52d5ccc72bb9240211e3d5bd68 100644
--- a/testes/lstit.cpp
+++ b/testes/lstit.cpp
@@ -5,81 +5,83 @@ const int N = 1e5+15;
 #define OP(X, Y) ((X) + (Y))
 #define NEUTRAL 0
 #define FACTOR(sz) sz
-#include "../fontes/lstit.h"
+#include "../fontes/lazy-segment-tree.h"
 
 int main() {
   ios::sync_with_stdio(0); cin.tie(0);
 
-  apply_inclusive(1, 10, '+', 1);
-  apply_inclusive(1,  8, '+', 1);
-  apply_inclusive(2,  4, '+', 5);
-  apply_inclusive(3,  8, '+', 3);
+  int n = 10;
+
+  apply_inclusive(1, 10, n, '+', 1);
+  apply_inclusive(1,  8, n, '+', 1);
+  apply_inclusive(2,  4, n, '+', 5);
+  apply_inclusive(3,  8, n, '+', 3);
 
   apply_inclusive(1, 10, '=', 0);
 
-  assert(op_inclusive(1, 1) == 0);
-  assert(op_inclusive(2, 2) == 0);
-  assert(op_inclusive(3, 3) == 0);
-  assert(op_inclusive(4, 4) == 0);
-  assert(op_inclusive(5, 5) == 0);
-  assert(op_inclusive(6, 6) == 0);
-  assert(op_inclusive(7, 7) == 0);
-  assert(op_inclusive(8, 8) == 0);
-  assert(op_inclusive(9, 9) == 0);
+  assert(op_inclusive(1, 1, n) == 0);
+  assert(op_inclusive(2, 2, n) == 0);
+  assert(op_inclusive(3, 3, n) == 0);
+  assert(op_inclusive(4, 4, n) == 0);
+  assert(op_inclusive(5, 5, n) == 0);
+  assert(op_inclusive(6, 6, n) == 0);
+  assert(op_inclusive(7, 7, n) == 0);
+  assert(op_inclusive(8, 8, n) == 0);
+  assert(op_inclusive(9, 9, n) == 0);
 
-  assert(op_inclusive(5, 8) == 0);
-  assert(op_inclusive(1, 8) == 0);
-  assert(op_inclusive(1, 9) == 0);
+  assert(op_inclusive(5, 8, n) == 0);
+  assert(op_inclusive(1, 8, n) == 0);
+  assert(op_inclusive(1, 9, n) == 0);
 
-  apply_inclusive(1, 10, '+', 1);
-  apply_inclusive(1,  8, '+', 1);
-  apply_inclusive(2,  4, '+', 5);
-  apply_inclusive(3,  8, '+', 3);
+  apply_inclusive(1, 10, n, '+', 1);
+  apply_inclusive(1,  8, n, '+', 1);
+  apply_inclusive(2,  4, n, '+', 5);
+  apply_inclusive(3,  8, n, '+', 3);
 
-  assert(op_inclusive(1, 1) == 2);
-  assert(op_inclusive(2, 2) == 7);
-  assert(op_inclusive(3, 3) == 10);
-  assert(op_inclusive(4, 4) == 10);
-  assert(op_inclusive(5, 5) == 5);
-  assert(op_inclusive(6, 6) == 5);
-  assert(op_inclusive(7, 7) == 5);
-  assert(op_inclusive(8, 8) == 5);
-  assert(op_inclusive(9, 9) == 1);
+  assert(op_inclusive(1, 1, n) == 2);
+  assert(op_inclusive(2, 2, n) == 7);
+  assert(op_inclusive(3, 3, n) == 10);
+  assert(op_inclusive(4, 4, n) == 10);
+  assert(op_inclusive(5, 5, n) == 5);
+  assert(op_inclusive(6, 6, n) == 5);
+  assert(op_inclusive(7, 7, n) == 5);
+  assert(op_inclusive(8, 8, n) == 5);
+  assert(op_inclusive(9, 9, n) == 1);
 
-  assert(op_inclusive(5, 8) == 20);
-  assert(op_inclusive(1, 8) == 49);
-  assert(op_inclusive(1, 9) == 50);
+  assert(op_inclusive(5, 8, n) == 20);
+  assert(op_inclusive(1, 8, n) == 49);
+  assert(op_inclusive(1, 9, n) == 50);
 
-  apply_inclusive(1, 10, '+', 1);
+  apply_inclusive(1, 10, n, '+', 1);
 
-  assert(op_inclusive(1, 1) == 3);
-  assert(op_inclusive(2, 2) == 8);
-  assert(op_inclusive(3, 3) == 11);
-  assert(op_inclusive(4, 4) == 11);
-  assert(op_inclusive(5, 5) == 6);
-  assert(op_inclusive(6, 6) == 6);
-  assert(op_inclusive(7, 7) == 6);
-  assert(op_inclusive(8, 8) == 6);
-  assert(op_inclusive(9, 9) == 2);
+  assert(op_inclusive(1, 1, n) == 3);
+  assert(op_inclusive(2, 2, n) == 8);
+  assert(op_inclusive(3, 3, n) == 11);
+  assert(op_inclusive(4, 4, n) == 11);
+  assert(op_inclusive(5, 5, n) == 6);
+  assert(op_inclusive(6, 6, n) == 6);
+  assert(op_inclusive(7, 7, n) == 6);
+  assert(op_inclusive(8, 8, n) == 6);
+  assert(op_inclusive(9, 9, n) == 2);
 
-  assert(op_inclusive(5, 8) == 24);
-  assert(op_inclusive(1, 8) == 57);
-  assert(op_inclusive(1, 9) == 59);
+  assert(op_inclusive(5, 8, n) == 24);
+  assert(op_inclusive(1, 8, n) == 57);
+  assert(op_inclusive(1, 9, n) == 59);
 
-  apply_inclusive(1, 7, '=', 0);
+  apply_inclusive(1, 7, n, '=', 0);
 
-  assert(op_inclusive(1, 1) == 0);
-  assert(op_inclusive(2, 2) == 0);
-  assert(op_inclusive(3, 3) == 0);
-  assert(op_inclusive(4, 4) == 0);
-  assert(op_inclusive(5, 5) == 0);
-  assert(op_inclusive(6, 6) == 0);
-  assert(op_inclusive(7, 7) == 0);
-  assert(op_inclusive(8, 8) == 6);
-  assert(op_inclusive(9, 9) == 2);
+  assert(op_inclusive(1, 1, n) == 0);
+  assert(op_inclusive(2, 2, n) == 0);
+  assert(op_inclusive(3, 3, n) == 0);
+  assert(op_inclusive(4, 4, n) == 0);
+  assert(op_inclusive(5, 5, n) == 0);
+  assert(op_inclusive(6, 6, n) == 0);
+  assert(op_inclusive(7, 7, n) == 0);
+  assert(op_inclusive(8, 8, n) == 6);
+  assert(op_inclusive(9, 9, n) == 2);
 
-  assert(op_inclusive(5, 7) == 0);
-  assert(op_inclusive(5, 8) == 6);
-  assert(op_inclusive(1, 8) == 6);
-  assert(op_inclusive(1, 9) == 8);
+  assert(op_inclusive(5, 7, n) == 0);
+  assert(op_inclusive(5, 8, n) == 6);
+  assert(op_inclusive(1, 8, n) == 6);
+  assert(op_inclusive(1, 9, n) == 8);
 }
diff --git a/testes/monotone.cpp b/testes/monotone.cpp
index 2c4e22247ec44a3708f298058a5b465532f4abda..4fa7590ce5362de740fb3144454139a3b2904a76 100644
--- a/testes/monotone.cpp
+++ b/testes/monotone.cpp
@@ -2,6 +2,7 @@
 using namespace std;
 using ll = long long;
 const double EPS = 1e-8;
+#define all(X) begin(X), end(X)
 #include "../fontes/point.h"
 #include "../fontes/monotone.h"