#include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define all(v) (v).begin(), (v).end() const ll m = 100; void maxCommonSubsequence(string a, string b) { ll k = a.size(); vvi T(k+1, vi(k+1, 0)); for (ll i = k-1; i >= 0; i--) { for (ll j = k-1; j >= 0; j--) { if (a[i] == b[j]) { T[i][j] = T[i+1][j+1]+1; } else { T[i][j] = max(T[i+1][j], T[i][j+1]); } } } ll i = 0, j = 0; while (i < k || j < k) { if (i < k && T[i][j] == T[i+1][j]) { i++; } else if (j < k && T[i][j] == T[i][j+1]) { j++; } else { cout << a[i]; i++; j++; } } } void run() { ll n; cin >> n; string a, b; cin >> a >> b; for (ll i = 0; i < n; i += m) { maxCommonSubsequence(a.substr(i, min(m, n-i)), b.substr(i, min(m, n-i))); } cout << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); run(); return 0; }