# 桁DP # dp[i][j] : iの倍数であり, jを含む p = int(input()) unhav = [0] * 3 hav = [0] * 3 nowstate = 0 for num in range(p+1): nunhav = [0] * 3 nhav = [0] * 3 #継続 for i in range(0, 10): for j in range(3): if i == 3: nhav[(i+j)%3] += unhav[j] + hav[j] else: nunhav[(i+j)%3] += unhav[j] nhav[(i+j)%3] += hav[j] #新規 if num > 0: for i in range(1, 10): if i == 3: nhav[i%3] += 1 else: nunhav[i%3] += 1 for i in range(3): hav[i] = nhav[i] unhav[i] = nunhav[i] nowstate = nowstate * 10 if num == 0: nowstate += 1 nowstate %= 3 unhav[nowstate] += 1 print(unhav[0] + hav[0] + hav[1] + hav[2])