#include <bits/stdc++.h>
using namespace std;

int LCS(const string& s, const string& t) {
	int ls = s.size(), lt = t.size();
	vector<vector<int>> dp(ls + 1, vector<int>(lt + 1));
	for (int i = 0; i < ls; i++) {
		for (int j = 0; j < lt; j++) {
			dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1]);
			if (s[i] == t[j]) {
				dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + 1);
			}
		}
	}
	return dp[ls][lt];
}

int main()
{
	string S, T;
	cin >> S >> T;
	int n = S.size();
	string o, e;
	for (int i = 0; i < n; i++) {
		if (i & 1) {
			o.push_back(S[i]);
		}
		else {
			e.push_back(S[i]);
		}
	}
	cout << (LCS(o, T) == o.size() || LCS(e, T) == e.size() ? "Yes" : "No") << endl;
	return 0;
}
### Prompt

Construct a cpp code solution to the problem outlined:

Example

Input

acmicpc
tsukuba


Output

No

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;

int LCS(const string& s, const string& t) {
	int ls = s.size(), lt = t.size();
	vector<vector<int>> dp(ls + 1, vector<int>(lt + 1));
	for (int i = 0; i < ls; i++) {
		for (int j = 0; j < lt; j++) {
			dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1]);
			if (s[i] == t[j]) {
				dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + 1);
			}
		}
	}
	return dp[ls][lt];
}

int main()
{
	string S, T;
	cin >> S >> T;
	int n = S.size();
	string o, e;
	for (int i = 0; i < n; i++) {
		if (i & 1) {
			o.push_back(S[i]);
		}
		else {
			e.push_back(S[i]);
		}
	}
	cout << (LCS(o, T) == o.size() || LCS(e, T) == e.size() ? "Yes" : "No") << endl;
	return 0;
}
```