#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a == 0LL) return b;
  if (b == 0LL) return a;
  return gcd(b, a % b);
}
int dp[2][20];
void solve() {
  string s;
  cin >> s;
  memset(dp, -1 * 1000000007LL, sizeof(dp));
  dp[0][s.size()] = 0;
  for (int i = s.size() - 1; i >= 0; i--)
    for (int j = 0; j < 2; j++)
      for (int dig1 = 0; dig1 < 10; dig1++)
        for (int dig2 = 0; dig2 < 10; dig2++)
          if ((dig1 + dig2 + j) % 10 == s[i] - '0')
            dp[(dig1 + dig2 + j) / 10][i] =
                max(dp[(dig1 + dig2 + j) / 10][i], dp[j][i + 1] + dig1 + dig2);
  cout << dp[0][0] << "\n";
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  clock_t clk = clock();
  int t = 1;
  for (int tests = 1; tests <= t; tests++) {
    solve();
  }
  clk = clock() - clk;
  cerr << "Time Elapsed: " << fixed << setprecision(10)
       << ((long double)clk) / CLOCKS_PER_SEC << "\n";
  return 0;
}

### Prompt

Please create a solution in Cpp to the following problem:

You are given a positive integer n.

Let S(x) be sum of digits in base 10 representation of x, for example, S(123) = 1 + 2 + 3 = 6, S(0) = 0.

Your task is to find two integers a, b, such that 0 ≤ a, b ≤ n, a + b = n and S(a) + S(b) is the largest possible among all such pairs.

Input

The only line of input contains an integer n (1 ≤ n ≤ 10^{12}).

Output

Print largest S(a) + S(b) among all pairs of integers a, b, such that 0 ≤ a, b ≤ n and a + b = n.

Examples

Input

35


Output

17


Input

10000000000


Output

91

Note

In the first example, you can choose, for example, a = 17 and b = 18, so that S(17) + S(18) = 1 + 7 + 1 + 8 = 17. It can be shown that it is impossible to get a larger answer.

In the second test example, you can choose, for example, a = 5000000001 and b = 4999999999, with S(5000000001) + S(4999999999) = 91. It can be shown that it is impossible to get a larger answer.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a == 0LL) return b;
  if (b == 0LL) return a;
  return gcd(b, a % b);
}
int dp[2][20];
void solve() {
  string s;
  cin >> s;
  memset(dp, -1 * 1000000007LL, sizeof(dp));
  dp[0][s.size()] = 0;
  for (int i = s.size() - 1; i >= 0; i--)
    for (int j = 0; j < 2; j++)
      for (int dig1 = 0; dig1 < 10; dig1++)
        for (int dig2 = 0; dig2 < 10; dig2++)
          if ((dig1 + dig2 + j) % 10 == s[i] - '0')
            dp[(dig1 + dig2 + j) / 10][i] =
                max(dp[(dig1 + dig2 + j) / 10][i], dp[j][i + 1] + dig1 + dig2);
  cout << dp[0][0] << "\n";
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  clock_t clk = clock();
  int t = 1;
  for (int tests = 1; tests <= t; tests++) {
    solve();
  }
  clk = clock() - clk;
  cerr << "Time Elapsed: " << fixed << setprecision(10)
       << ((long double)clk) / CLOCKS_PER_SEC << "\n";
  return 0;
}

```