#include #include #include #include #include #include #include #include #include using namespace std; #pragma warning (disable: 4996) long long N; long long solve(long long pos, long long r) { if (r >= N) { if (100LL <= pos && pos <= N) { return 1; } return 0; } long long ret = 0; for (int i = 0; i <= 9; i += 3) { ret += solve(pos + 1LL * i * r, 10LL * r); } return ret; } int main() { cin >> N; long long r1 = solve(0, 1); long long r2 = 0; for (int i = 10; i <= 99; i++) { if (i <= N && i % 3 == 0 && ((i / 10) + (i % 10)) % 3 == 0) r2 += 1; } cout << r1 + r2 << endl; return 0; }