diff --git a/contests/Cadernaveis/URI1130.cpp b/contests/Cadernaveis/URI1130.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1d02342ecca8b13debb22aa02f106eccd7c1f586
--- /dev/null
+++ b/contests/Cadernaveis/URI1130.cpp
@@ -0,0 +1,79 @@
+#include <bits/stdc++.h>
+
+#define MAX 10101
+#define EPS 1e-6
+#define MOD 1000000007
+#define inf 0x3f3f3f3f
+#define llinf 0x3f3f3f3f3f3f3f3f
+
+#define fi first
+#define se second
+#define pb push_back
+#define ende '\n'
+
+#define all(x) (x).begin(), (x).end()
+#define rall(x) (x).rbegin(), (x).rend()
+#define mset(x, y) memset(&x, (y), sizeof(x))
+
+using namespace std; 
+
+using ll = long long;
+using ii = pair<int,int>;
+
+int dp[MAX];
+//int foi[MAX];
+
+int solve(int n) {
+  if (n < 5) 
+    return 0;
+  if (dp[n] != -1)
+    return dp[n];
+
+  vector<int> foi(MAX, 0);
+  for (int j = 2; j < n - 2; ++j)
+    foi[solve(j) ^ solve(n - 1 - j)] = 1;
+
+  for (int j = 0; j < MAX; ++j)
+    if (!foi[j]) {
+      dp[n] = j;
+      break;
+    }
+
+  return dp[n];
+}
+
+int main() {
+  ios::sync_with_stdio(0);
+  cin.tie(0);
+
+  int n;
+  mset(dp, -1);
+  while (cin >> n && n) {
+    string s; cin >> s;
+
+    bool done = false;
+    for (int i = 1; i < n; ++i)
+      if (s[i] == 'X' && s[i-1] == 'X') done = true;
+    for (int i = 2; i < n; ++i)
+      if (s[i] == 'X' && s[i-2] == 'X') done = true;
+
+    if (done) {
+      cout << 'S' << ende;
+      continue;
+    }
+
+    int ans = 0;
+    int last = -3;
+    for (int i = 0; i < n; ++i) {
+      if (s[i] == 'X') {
+        ans ^= solve(i-last-1);
+        last = i;
+      }
+    }
+
+    ans ^= solve(n-last+1);
+    cout << (ans ? 'S' : 'N') << endl;
+  }
+
+  return 0;
+}
diff --git a/contests/SBC16/a.out b/contests/SBC16/a.out
deleted file mode 100755
index 71cabd06f9608efa44779b2b5837c4fbe534a032..0000000000000000000000000000000000000000
Binary files a/contests/SBC16/a.out and /dev/null differ