#include namespace solver{ std::unordered_set set; void dfs(int i, int s, int N){ if(i == 9){ if(s <= N and s >= 100) set.insert(s); return; } dfs(i + 1, s * 10 + 0, N); dfs(i + 1, s * 10 + 3, N); dfs(i + 1, s * 10 + 6, N); dfs(i + 1, s * 10 + 9, N); } void solve(){ int N; std::cin >> N; int ans = 0; for(int i = 10; i <= 99; ++i){ if(i <= N){ if(i % 3 == 0){ if(((i % 10) + (i / 10)) % 3 == 0){ ++ans; } } } } dfs(0, 0, N); ans += set.size(); std::cout << ans << "\n"; } } int main(){ solver::solve(); return 0; }