import sys sys.setrecursionlimit(5*10**5) input = sys.stdin.readline from collections import defaultdict, deque, Counter from heapq import heappop, heappush from bisect import bisect_left, bisect_right from math import gcd n = int(input()) mod = 998244353 def fact(n): l = set() for i in range(1,int(pow(n,0.5))+1): if n % i == 0: l.add(i) l.add(n//i) return sorted(list(l)) def pfact(n): l = [] tmp = n for i in range(2,int(pow(n,0.5))+1): if tmp % i == 0: cnt = 0 while tmp % i == 0: cnt += 1 tmp //= i l.append([i,cnt]) if tmp != 1: l.append([tmp,1]) return l fn = fact(n) pp = [i for i,j in pfact(n)] d = [[0]*(len(pp)) for i in range(len(fn))] for i in range(len(fn)): now = fn[i] for j in range(len(pp)): while now % pp[j] == 0: d[i][j] += 1 now //= pp[j] cnt = defaultdict(int) for i in range(len(fn)): tmp = 1 for j in range(len(pp)): tmp *= d[i][j] + 1 cnt[fn[i]] = tmp dp = [1]*(len(fn)) for i in range(1,len(fn)): for j in range(i+1,len(fn)): if fn[j] % fn[i] != 0: continue tmp = fn[j] // fn[i] tmp = 1 for k in range(len(pp)): if d[i][k] == d[j][k]: tmp *= d[i][k] + 1 dp[j] += dp[i] * tmp dp[j] %= mod print(dp[-1])