Hai nhánh gia tộc

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2000 (p) Thời gian: 2.45s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một gia tộc cổ được chia thành hai nhánh.

  • Nhánh thứ nhất gồm các thành viên được đánh số: \(1,3,5,\ldots\)

  • Nhánh thứ hai gồm các thành viên được đánh số: \(2,4,6,\ldots\)

Trong buổi lễ truyền thừa, các thành viên của hai nhánh sẽ lần lượt tiến vào đại điện để xếp thành một hàng.

Để giữ gìn truyền thống của gia tộc, thứ tự xuất hiện của các thành viên trong mỗi nhánh không được thay đổi. Nói cách khác:

  • Các thành viên của nhánh thứ nhất luôn xuất hiện theo đúng thứ tự:\(1,3,5,\ldots\)
  • Các thành viên của nhánh thứ hai luôn xuất hiện theo đúng thứ tự:\(2,4,6,\ldots\)

Tuy nhiên, hai nhánh có thể được đan xen với nhau theo bất kỳ cách nào.

Gia tộc còn có một quy tắc đặc biệt: hai thành viên đứng cạnh nhau chỉ được phép xuất hiện nếu hiệu tuyệt đối giữa hai số hiệu của họ là một số nguyên tố.

Ngoài ra, nghi lễ có thể được tổ chức theo hai hướng (từ đầu đến cuối hoặc từ cuối về đầu), và hai cách này được xem là khác nhau nếu tạo ra hai dãy khác nhau.

Cho số nguyên dương \(n\).

Hãy giúp ledinhbaonam tính số lượng cách xếp hợp lệ của các thành viên được đánh số từ \(1\) đến \(n\).

Do đáp án rất lớn, hãy in kết quả chia lấy dư cho \(998244353\)

Input

  • Gồm một số nguyên \(n\) (\(1\le n\le3\cdot10^4\))

Output

  • In ra số lượng cách xếp hợp lệ modulo \(998244353\).

Example

Test 1

Input
1
Output
1
Note

Chỉ có duy nhất một cách xếp: 1

Test 2

Input
4
Output
2
Note

Hai cách xếp hợp lệ là:
1 2 3 4
4 3 2 1

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.