diff --git a/lib.cpp b/lib.cpp
index b8475822ce2add60ca65162c034ea0619830e846..69c03d1bfb5f7a7f5a135f5c2a46541c8f0b7b2b 100644
--- a/lib.cpp
+++ b/lib.cpp
@@ -154,6 +154,8 @@ namespace lib
 		{
 			int mistakes_int;
 			assert(scanf("%d %d\n", &n, &mistakes_int) == 2);
+			assert(n>0);
+			assert(mistakes_int == 0 || mistakes_int == 1);
 			mistakes = mistakes_int;
 
 			assert(scanf("%m[^\n]\n", &verdict) == 1);
@@ -164,6 +166,7 @@ namespace lib
 			assert(scanf("%m[^\n]",  &out_data) == 1);
 			assert(strlen(out_data) == 2*n);
 			out = vector<bool>(2*n);
+			fo(i, 2*n) assert(out_data[i] == '0' || out_data[i] == '1');
 			fo(i, 2*n) out[i] = out_data[i] - '0';
 			delete [] out_data;
 
@@ -171,6 +174,11 @@ namespace lib
 
 			input = vector<int>(2*n);
 			assert(fread(input.data(), sizeof(int), 2*n, stdin) == 2*n);
+			fo(i, 2*n) assert(input[i] >= 0 && input[i] < 2*n);
+
+			vector<int> num_used(n);
+			fo(i, 2*n) num_used[input[i]]++;
+			fo(i, n) assert(num_used[i] == 2);
 		}
 	}
 	void log_data(const char * key, const char *fmt, ...)