diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/1.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/1.exercises/config.json"
index d859b2361ee57823ecfa3262e7ae911dbba3fa18..ec2618be4c8fff7170b25ad539272682cc1620c3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/1.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/1.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/1.exercises/solution.json"
index 69f42cd3694e08aa38eb3d9271fad9d03fccc3b1..9b389d5cca59881b5cbea27b7c22e1a8ce5c85e4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/1.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "chinachenlu",
   "source": "solution.md",
   "exercise_id": "2081a5fe4b7a48a19ee2cbab00388ec7",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/config.json"
index 031560910c880fa949679fab609edf0523225b20..5b5c237a7b026f8f3f4fee7253d478e6aca36efe 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/solution.json"
index ef4e80113ac3e8407bbb39cef61c4e1911de03ba..2879e9a752003035f704f59a2053696c5dfd3f35 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Flyyyy_",
   "source": "solution.md",
   "exercise_id": "18d1a3976bb4424bb4d8fae27a8de3f5",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/config.json"
index 2514af3e91d2d8b478e532d6e5a672c205137600..fcbdc9fd461b4bc4ce7326956a8c2528f861aebe 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/solution.json"
index 10947a2d605e3e459ebfaa9cf02d2f0d09b712aa..4ebbc0977e184bb0823daeb484379fef6c3e34c6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Skyiing",
   "source": "solution.md",
   "exercise_id": "07b64188801e410c82dbb0a4cfe65013",
-  "keywords": "算法初阶,基础知识,特征序列,概率分析和随机算法,概率分析和指示器随机变量的进一步使用"
+  "keywords": "算法初阶,基础知识,特征序列,概率分析和随机算法,概率分析和指示器随机变量的进一步使用",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/config.json"
index 96c99576f980966553d6ed4f1d792f196e7f5bbd..4f46f388cc154ea701399fd75719ad27ff524cec 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/solution.json"
index 308425d3005067bd08e8abffbb832da11b765c07..a7795c6a1bfcaf8f460f84620fbcf16fe800ef91 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32565003",
   "source": "solution.md",
   "exercise_id": "c6e88d96e04c4bbb91106f400c99f436",
-  "keywords": "算法,图形输出"
+  "keywords": "算法,图形输出",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/config.json"
index f156364b0f1004dbb8603318ee0af5b49902d89f..f9cb083ff81ebd49c9678b2ba9a5253bc80586de 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/solution.json"
index b0992d59515560f77513262289041ee08c0a4749..9cc9c2c886ac3843ad62bedba79cc743a1c5cccc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32517277",
   "source": "solution.md",
   "exercise_id": "f3be7867de2e4a7a9b1fc61f0e02dd2b",
-  "keywords": "算法中阶,动态规划,最长公共子序列,高级设计和分析技术"
+  "keywords": "算法中阶,动态规划,最长公共子序列,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/14.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/14.exercises/config.json"
index 64aaa3326c3f0f2c386eed5254f83ee054dfaa4b..66c3df03b4bbd291bb00e841e715a40624e0c5f8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/14.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/14.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/14.exercises/solution.json"
index 6bf0330e0f1e22bf3d8657dbde20360d7b0ac8fc..828f721b553cfad2285515bca84abf739b3df673 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/14.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_41208975",
   "source": "solution.md",
   "exercise_id": "2c345d38dc4f44148223b82cb0200bc2",
-  "keywords": "算法初阶,基础知识,分治策略,证明主定理,对b的幂证明主定理"
+  "keywords": "算法初阶,基础知识,分治策略,证明主定理,对b的幂证明主定理",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/15.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/15.exercises/config.json"
index 93613d1abc39a9df8368e83faa41ca1dbe33366b..3bba407acb7fb9b0becededb25d8cf3eaa9c5347 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/15.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/15.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/15.exercises/solution.json"
index 9e221b9eaed8e7f909ea9230cfa35f7d72ab359e..8b310d09b8fae3524ec1bf734fc0a27dead883f7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/15.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "android_wjq",
   "source": "solution.md",
   "exercise_id": "ec24de171a30438d807712d827454a63",
-  "keywords": "数学运算"
+  "keywords": "数学运算",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/config.json"
index 787fc955abc14bb17dafad3f9f0558829a31e1d7..c7534c79c02e69df553f12ad38ed95da30054168 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/solution.json"
index 5aa045b54da75e479fe395d45ec72230a7c07c89..444df19bb61baef71946fdda37877cb1f69b31ac 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_17608345",
   "source": "solution.md",
   "exercise_id": "3dc7b8659623455cbb5edb5d911490b5",
-  "keywords": "算法高阶,数论算法,元素的幂,算法问题选编"
+  "keywords": "算法高阶,数论算法,元素的幂,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/17.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/17.exercises/config.json"
index 4a28b33904d0625183bd38eac1813c7965994467..20fcba283a9e4718a7f5a67cc43192e6b9a756ba 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/17.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/17.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/17.exercises/solution.json"
index 21dc26c15801f12ed2fa17d9a31449fab3e35e7c..66af533748d628aa2d213f79f113761fb32bdbd9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/17.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "onlyformyself",
   "source": "solution.md",
   "exercise_id": "75135d3d50e04fb1b179a3bccaff8095",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,期望为线性时间的选择算法"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,期望为线性时间的选择算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/18.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/18.exercises/config.json"
index 1d9b03959db32848a0dfd1ea4614335c74e839c3..35ccc4985721d2471c4b80f72b0f42b64337f1ee 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/18.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/18.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/18.exercises/solution.json"
index 75adcf0f0bfe2dfc4c3ad1c3896d5b9d01f404ca..98c9004c4f6474a70f0503db5a3cb48e1a25a42f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/18.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e0ed26c00e394a4bb732453c9cf34c85",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/config.json"
index db348e144e7f38f245f3b495a5a9601c3bfc539b..a6d24b3cb65a850b4d26aa346623bf32f8202c30 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/solution.json"
index adbacfeb8c596ef0c779de8d5a0bb56c424a01d3..f7f294c87f442eda502e23dc68f4d2861632b68c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Harry_Kuma",
   "source": "solution.md",
   "exercise_id": "cd1c7b8656184bc182464888f93f178a",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/config.json"
index 7d13f343f4930588ef2e495fe880f0aaf30c08be..ccabee637b25dcc40b285a65c856c53498436a59 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/solution.json"
index 872a4138e4faeb0949ad3368a67d478c93228669..c4766b3e884c6d3c670f0f69e766005f2c3602e3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "dmcff",
   "source": "solution.md",
   "exercise_id": "337b3f0460f140e0a2e1984f78f1cbb2",
-  "keywords": "算法初阶,基础知识,算法基础,设计算法,分析分治算法"
+  "keywords": "算法初阶,基础知识,算法基础,设计算法,分析分治算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/config.json"
index c957a9f9acd1cba54408ba1658f1615ad47de464..e58b6f02a2b34901af62b33fd2c0831f530b06b7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/solution.json"
index 03e363739cc46975b469597669465a0159af1034..6907e2e67c113780c248513353ba7d62e6b540d9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "ts12009",
   "source": "solution.md",
   "exercise_id": "37e3b85ac0fd4586ae7e18a4cac5a70f",
-  "keywords": "算法高阶,计算几何学,算法问题选编,确定任意一对线段是否相交"
+  "keywords": "算法高阶,计算几何学,算法问题选编,确定任意一对线段是否相交",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/config.json"
index 3275728193f3e80caa96f259797d3acaae700957..235877a270c15d44159bdd95d1a921c6a45d15e1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/solution.json"
index 5b8cf11c6dd46be63da602dd6fb5054caac1a2cd..72501d8bb6280510a7f6d7c44940bd912fd92273 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/21.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "hnwzjcds",
   "source": "solution.md",
   "exercise_id": "bb8ae5765727421eb08c5de7e9699fc3",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/config.json"
index f8b021609512f37c3330b36eef592542cdca549b..2bdce19439228974f0c4d1a8712a78ecd87cdbf5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/solution.json"
index a3d9249ab657cedb6076d37f131a888678be1986..6d3a02c69908850e4c9f11dd566fedc630f81df1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/22.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "95b95d395fef41e390d3b512a7c62705",
-  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量"
+  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/config.json"
index d67833e58850af779ba39a4835b7cb2820c52eda..52d6c9ae93c94bea4828209c2a03f2ffc1b5caa0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/solution.json"
index 6b7ab6d662c44932cd72a3c1e40db6d30511eaaf..92e1bd560fdd9c34f19ac81a3279e6fbedd45037 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/23.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45782465",
   "source": "solution.md",
   "exercise_id": "43b13523e05540b7a3e1315f981d47af",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/config.json"
index e8c4e86ac7d894cf8da639c652411c72c9356373..cb5ddb43edc6a9f324c6f2d7bb4f93637b3cb548 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/solution.json"
index db38d5b0cb31b5b12142a69825c2a82ea58a427d..4af70b97a6d361809ba03b1bc04c9fac1936e767 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/24.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "zqgx1990",
   "source": "solution.md",
   "exercise_id": "74677d031c15454ba08620f7584d319c",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/config.json"
index f64f7d13b59f894536d2b0c8f3cabc0d39f03122..bfd78ca6786807ec3ed8a5172034d19085ae575f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/solution.json"
index 8fdcda8492046df1526688f29305c203940a9c95..4ded58fc158a8ae3ebbd3f6b1c505665fdb3e726 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/25.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32871159",
   "source": "solution.md",
   "exercise_id": "261703b256274305a629bee39fa0a25d",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/config.json"
index 1cf069ca515e817bf669561172bbb2fd281c55d1..410552b907c958583493e28c7b20d907a12ddc11 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/solution.json"
index 8d5a3eabaeebd36301b243804c4889bf5358e910..4365fbaec4071a9141c70a552cda5b515be6c360 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/26.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "naiyitian",
   "source": "solution.md",
   "exercise_id": "952b11e4fca244409f82bc96502ffaf6",
-  "keywords": "数学,算法"
+  "keywords": "数学,算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/config.json"
index b47dab8dbb6d5624ed6b18705a16cfa2a7e63d4c..23b2acd273b75e4f042daeab0776e9f2b0d65d7b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/solution.json"
index 1c27386dcc72790ce9b674366c9a5145652d108c..747fff74ac0ba5693a4d830b6d2833e8f1fe436b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/27.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq675032915",
   "source": "solution.md",
   "exercise_id": "6b4490cf046f4376a882eef5bda4d59a",
-  "keywords": "时间转换"
+  "keywords": "时间转换",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/config.json"
index f7c949abb737cf9da01485d94ce045f430c10776..d320a42b8e861219963811d8445ff3d095e258d1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/solution.json"
index 56029632c97c5fcdf35fd2e11b6b03294c58ca02..0b5bd475575f2d15e8575031007f9d3348a2a6b1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/28.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "dfcde76c90054b1eb7b5ed66d00acb4a",
-  "keywords": "算法,字符串"
+  "keywords": "算法,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/29.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/29.exercises/config.json"
index 326398d3030269d9bbc1e3dde370e2ea2fe74e87..66a88e3e6bfe19e67aac1d5390b344c3efc8741d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/29.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/29.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/29.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/29.exercises/solution.json"
index 9f9bd8d55f9809622fadd3a0f10bb808be44452c..d6ad88ee3e127e7ee294c368f704e5eca229ce9d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/29.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/29.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "bonze1023",
   "source": "solution.md",
   "exercise_id": "a27288a39f4b4bcb96316f366f386b4f",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/config.json"
index 239d1ac8334977e2bceb25a18ae64d1432e445f0..29b4a542c92bd24758236804a9626277d5fe391f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/solution.json"
index 105b364cf425338baefbcc7f3f5d3a1c2886d4b1..e32ff4e063bba9300fbdb80fa37373eaa4561eb7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "m0_45801658",
   "source": "solution.md",
   "exercise_id": "926861f9153c43fbb4b93e5ee1ec2d2a",
-  "keywords": "算法中阶,贪心算法,活动选择问题,高级设计和分析技术"
+  "keywords": "算法中阶,贪心算法,活动选择问题,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/30.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/30.exercises/config.json"
index 434e5e695d0835b9216ffe2be29793b6f92f4c6b..b4570b9150b750c7fed163363c6e8779b097a9be 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/30.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/30.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/30.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/30.exercises/solution.json"
index 66e62a2962fdfd3a5434c12dda804a82bddb2246..6952699b1da2f48eb9d194707b322cb0dcfcabab 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/30.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/30.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45814103",
   "source": "solution.md",
   "exercise_id": "8517fe2b3ab94ebfaefe815949da2d20",
-  "keywords": "数列,递归,数学运算"
+  "keywords": "数列,递归,数学运算",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/31.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/31.exercises/config.json"
index 32354de7e07545ce2a8cb40f21f3059574ba9f37..f7de3f4dfd101a2d1e9821eedaa169201806d88c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/31.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/31.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/31.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/31.exercises/solution.json"
index 06645d161942046fc4b99d106b7e86bee6e56f71..e251c3fbfe65ffe33339b4196e865d02f1d39999 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/31.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/31.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "tanglei25",
   "source": "solution.md",
   "exercise_id": "97926ffce4134ed2a2317cfdd0378175",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/32.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/32.exercises/config.json"
index 6ace5386c6804a1b1c1100c863459bb09f6f55fb..f2c5bcfe40963cdeb61b586e00691dfd291c52f8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/32.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/32.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/32.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/32.exercises/solution.json"
index f6d719f001086ca51b7fab7025318e0207064492..37cbabb0497d8b9320127bac23d39ba01134b8ef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/32.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/32.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Cruel_xu",
   "source": "solution.md",
   "exercise_id": "2b2ef20f0be545bf89115f683d131db8",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/33.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/33.exercises/config.json"
index 0a70d629c7e789b4f2a2715f947bbe645da54572..06389630989c231fc63e74873f5b184dd008ec58 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/33.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/33.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/33.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/33.exercises/solution.json"
index 60fef4199dd3091ee690a7d36a4335286e111ee6..ed22381acf6b90685ede60122a2fdd7c4d87d413 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/33.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/33.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Dorispt",
   "source": "solution.md",
   "exercise_id": "6ce02858aefa4a0ea1909954c57ce3b2",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/34.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/34.exercises/config.json"
index 08e345f4da5d7fcdcfb3405485ab87e0501651f8..764bd68f2183d4b90ef724874cef7e4d5e33ce74 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/34.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/34.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/34.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/34.exercises/solution.json"
index 18d1aaa2bbcf68ad9f54c488c6dd30c5bc9cd4a3..89893bc415a62de108d7ff23d98b3ea5d9e64141 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/34.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/34.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45128830",
   "source": "solution.md",
   "exercise_id": "021cb62e7da84d569ace7e3036cb19c5",
-  "keywords": "递归,算法"
+  "keywords": "递归,算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/35.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/35.exercises/config.json"
index 1176ef933fd2a9b15981268a687c0648353a6089..2d7203f0cdbf121f5851a97b5d323b391ca7b398 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/35.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/35.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/35.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/35.exercises/solution.json"
index b2bd14db1efa55bf6e1365142c9e9402dc77d66b..5979d7a8aa3194ba3ec4a9eaba6e7014e50de912 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/35.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/35.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "xushao180",
   "source": "solution.md",
   "exercise_id": "ce9c2b5715b9442288e0e56552087acf",
-  "keywords": "数列,数学运算"
+  "keywords": "数列,数学运算",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/36.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/36.exercises/config.json"
index 24039fb0ab21e0a448009c412d6fa8cbb6c82f47..bfa8bd927e588495b852d8bc99f2587aa2771a5b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/36.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/36.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/36.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/36.exercises/solution.json"
index 99b74f2f01667961859cdf51c581a77b404c0db3..8fb84fd38b4f9ff5be0be3c3ce5f79ea60857296 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/36.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/36.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "zzzqql",
   "source": "solution.md",
   "exercise_id": "89d9e179bea44370ab0c829bb40b6b76",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/37.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/37.exercises/config.json"
index cb6a8ca0f3f82e427cdfa1285b2898b6f62e14b7..6a54a462f89c558c5b35106471f7629b6d02a1de 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/37.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/37.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/37.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/37.exercises/solution.json"
index 6c7726882b07de25972de50ffaa619a33b95ac18..1b96a54761ff81fc129a00d91b6bb9c61f2c832c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/37.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/37.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "xsl2516847663",
   "source": "solution.md",
   "exercise_id": "a9b93d1decbc46a0b40aa01f35b02ea3",
-  "keywords": "循环"
+  "keywords": "循环",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/38.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/38.exercises/config.json"
index 46873fd7e909d86202ccf802201b4baadf1c7dcb..683aa56d9a69ccefab25ff1acee0e5758f4e2fb6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/38.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/38.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/38.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/38.exercises/solution.json"
index 68ae8eda3a594835f0b8d402beed57afc3d64558..c248d71ac58d1085d4e18f2ed854a1651c6f59ac 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/38.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/38.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "stelladragon",
   "source": "solution.md",
   "exercise_id": "2643e10921c54ac283bdb73499243c5d",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/39.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/39.exercises/config.json"
index f5cd96a62ea9582615a10987bd5b63e379d62e4b..4e2cadbe2705d21e01c78aadd62d92101fca9a17 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/39.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/39.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/39.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/39.exercises/solution.json"
index 88f9ddfd39f6687fb3d9b5b21722eafa833aaa92..d7435e729ef4bfae7a6c9a9f8f69696443527a20 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/39.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/39.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "feiniao2029",
   "source": "solution.md",
   "exercise_id": "470a59d0ed744d55b36a9fbe8ed76198",
-  "keywords": "数列"
+  "keywords": "数列",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/config.json"
index ec0fb0648cb4d380213551afb38abb9c382d05a8..f893c88fc5aa891f70c15f46d9c7c22aeef63e1d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/solution.json"
index 3e04efbbde22c07e4be7ee0f63192afb2b062119..9c8929a3c1f5aa32d0bce0fe3015e3e2b8580a56 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_44563215",
   "source": "solution.md",
   "exercise_id": "7b5fba1ab1d24fc086a730fc23772c43",
-  "keywords": "质数,数学运算"
+  "keywords": "质数,数学运算",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/40.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/40.exercises/config.json"
index 6277e9cad569a59d6f42a17017fc180230c38065..61c2f7e8a11513de43851b2998acee3456aad7c1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/40.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/40.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/40.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/40.exercises/solution.json"
index d4f8b90936f41bb7ed91c82d2a91f76cac386d86..0acc7e304c2cd89c538ab6406791974a6c777a0d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/40.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/40.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "zhangxiaox",
   "source": "solution.md",
   "exercise_id": "9e99f632c7254a3386832c055749196f",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/41.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/41.exercises/config.json"
index 3f0150a5001eb937b29fe94305b460b240fdb7d1..6ace10fa39e5e89f25d018f7e0e76ace5eba41ac 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/41.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/41.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/41.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/41.exercises/solution.json"
index a0b733744bcc0b73612f9d7212f533ff7e5b2ce4..9926c4e3f2969553112ba4934c5ee2bf853f7ce0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/41.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/41.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45817480",
   "source": "solution.md",
   "exercise_id": "1cc2af8b030c41f687a7d0308bcbd9be",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/42.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/42.exercises/config.json"
index 5523eb755b714e01d5e26d71142fb2dde9c9c07b..adbee700544dce6e9788374ce5cd48a9231b05ac 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/42.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/42.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/42.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/42.exercises/solution.json"
index 1d83a7f334efdb100efa41e32088a661e9796d4b..acc054b9eceb8bb996ad789f9a74fba8e539a77a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/42.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/42.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Funtional",
   "source": "solution.md",
   "exercise_id": "93aef0d373dc44f58c0097b772693f6f",
-  "keywords": "算法高阶,矩阵运算,矩阵求逆,算法问题选编"
+  "keywords": "算法高阶,矩阵运算,矩阵求逆,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/43.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/43.exercises/config.json"
index cd2fdcecb54faf93e9f71f7821a471786a0e8585..b63c57adfb4f2e290036625e008256eb9cfe7029 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/43.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/43.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/43.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/43.exercises/solution.json"
index efeb317b4117122d962debdc7c7f77bc0d23dba6..792057a384960fe0a14e7903c790d9a6a9e0ce7d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/43.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/43.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "l990308",
   "source": "solution.md",
   "exercise_id": "a691200feb064addb5299c796864fb54",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/44.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/44.exercises/config.json"
index e4423e1d42ba3b078e9d0630be670b543c11b946..9564fb946abf2f23c5682beecf1041a978578b7c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/44.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/44.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/44.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/44.exercises/solution.json"
index 41e4f1d26a82eb8f559e0a730135d1717ab61888..c227b4046d9c92706fea9907b1ae16be84ab73cf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/44.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/44.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "xigua123321",
   "source": "solution.md",
   "exercise_id": "0f46f7cc63a64195a69ecf894966c670",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/45.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/45.exercises/config.json"
index 44f174496d390908e0774b153fae17fdf3bd477b..abde0170a57055f6e560cf569acd9b4d30f3d569 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/45.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/45.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/45.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/45.exercises/solution.json"
index 5d4575986081e6f6d9d64896f0df6a06925f8c3b..f9d2f4523897d62ebffba04057b6dcfea79f9dcb 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/45.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/45.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45096552",
   "source": "solution.md",
   "exercise_id": "3a4cd3d0b4984206a8894f5a5a5f8698",
-  "keywords": "区间树,算法中阶,数据结构,数据结构的扩张"
+  "keywords": "区间树,算法中阶,数据结构,数据结构的扩张",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/46.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/46.exercises/config.json"
index 55f4fe310fc06f4ce57542f5e861e736d9e8e144..6271522e4744c4f4a4bd0afc59adc65800cbc6a1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/46.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/46.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/46.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/46.exercises/solution.json"
index 8638909c78451b7e9a0518631c94fbf64b15d2d0..3717be397ebe03b4e74dcb8718b9d10214c70d69 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/46.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/46.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "xi2247",
   "source": "solution.md",
   "exercise_id": "2868e7b62db247d8b3800d43ebff571b",
-  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编"
+  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/47.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/47.exercises/config.json"
index ef8f778ede1266facd7027a89ac44bbe702899ff..670d1adeb055255d664740833018f59682a838ef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/47.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/47.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/47.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/47.exercises/solution.json"
index b648234ec2603d034bfe7f2429ad2bbc81831a9b..ef67391ee7f9ce1811b7eb440cc5aeed6a5d56ef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/47.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/47.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "xinning0702",
   "source": "solution.md",
   "exercise_id": "0a56db6452f24e50933fff9480245e2f",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/48.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/48.exercises/config.json"
index f73480d00c836b28abb2d85f04539a3112aa15ec..d1fc7719738495a45275eb6b03223edbc1fbe6ec 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/48.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/48.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/48.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/48.exercises/solution.json"
index 6815faf21d90415b18a302e91f9dd085f435b52f..ee6332adf32ec03567de93375ab5282f620c4247 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/48.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/48.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "taowei0210",
   "source": "solution.md",
   "exercise_id": "2ba1fb6b11e2484ab4d3b77e77e71f5e",
-  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量"
+  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/49.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/49.exercises/config.json"
index 1dc825cafa95c882665f186742337200fbf0e3ec..f1046cab6b6372f467fa294240a40a330cac3da2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/49.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/49.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/49.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/49.exercises/solution.json"
index 7f04ab84cd74452c8fe29e7346c8cb23c4c5da97..42b202b264b6f77cade239e3372553d0ec1ddde1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/49.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/49.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_16109091",
   "source": "solution.md",
   "exercise_id": "784938343cda4c629b52000ba7981f24",
-  "keywords": "数学运算"
+  "keywords": "数学运算",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/config.json"
index a49844e619df1138f33fd3eb2219e728b5b2fef2..0c635f9b45e8f473b9276fe49af210c8fe1a1160 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/solution.json"
index 281d020009632c9569a24dcd87edfd2b1e449c42..4d6e834302f2774f8f1b1d60f5c7fd87f9410a05 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "sinat_25061079",
   "source": "solution.md",
   "exercise_id": "a13a0ee7f65e4635847c39aa35ad12dd",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/50.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/50.exercises/config.json"
index 617f52ec0bd294cb31ee963b380ec803ba887571..e4e34ca119361fa6952ff3f7a7572c82a5edc41d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/50.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/50.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/50.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/50.exercises/solution.json"
index d0dcce870bd9b144f5c6fbd07cf70aced82af4da..f18362518d40cf79824e4d4e4d5ac64fbe1ff1a3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/50.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/50.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_22635249",
   "source": "solution.md",
   "exercise_id": "64cdf149702648d08e72882e5a4b194e",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/51.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/51.exercises/config.json"
index 2e15d47cc9a2b46a0283be29cccb56ea719562bd..ffb9da4cf6535e58954a883c1b258e0820d42db1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/51.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/51.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/51.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/51.exercises/solution.json"
index 61412b2b5341f4223e3e8fb34ab281843efeef15..359325ae1a96ebd4484fa5be6da6dfb7778ccac0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/51.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/51.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_42023987",
   "source": "solution.md",
   "exercise_id": "3d029d11c3e84465a0a62b1e960cc2bb",
-  "keywords": "算法高阶,数论算法,算法问题选编,RSA公钥加密系统"
+  "keywords": "算法高阶,数论算法,算法问题选编,RSA公钥加密系统",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/52.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/52.exercises/config.json"
index 2601f28752ed119a3f9307f1b5b1f3241330a25b..904b2f0eef4a4405afe9cdd6bf9b7e9cf5f6ade7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/52.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/52.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/52.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/52.exercises/solution.json"
index 252cdf98bc06cc3eae96103a2167094b3bee9429..54f8c2426eebca91ceba0b484bd91fd9d683c09a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/52.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/52.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "db4add245fdb48d7bfe7bdc18e28c4c4",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/53.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/53.exercises/config.json"
index 69036c7aedaa7ce4cc944d11b6af8e0ae160d912..cde7b331855e10fdd9a74bdc6adf2d29242ac500 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/53.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/53.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/53.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/53.exercises/solution.json"
index 5cded29a4037421b8a91595e201caeaf89129145..e64127e9aa564b90870fd58995c12d77cd362038 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/53.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/53.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "wshaipsy",
   "source": "solution.md",
   "exercise_id": "7a01b1256de14c1b8ad5e331d1fae735",
-  "keywords": "算法高阶,矩阵运算,矩阵求逆,算法问题选编"
+  "keywords": "算法高阶,矩阵运算,矩阵求逆,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/54.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/54.exercises/config.json"
index c030550c30de8112deb1ed527aec568a58472f98..82302b4455b5ffde86f729d0f1d437298d3e3949 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/54.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/54.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/54.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/54.exercises/solution.json"
index b9b72518e038d1e12a3cf11669b60c7bb4787919..66f8c73f4878d576ba9fab3cb0f46517968f29f0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/54.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/54.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32654125",
   "source": "solution.md",
   "exercise_id": "5d8658bd3bf54a3eb80aa8073f45ff9b",
-  "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术"
+  "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/55.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/55.exercises/config.json"
index 6751fb5f45b7bb06383c58409016ba45d3adfa19..51b81002f851e67cdecdddc90d5899b46646813d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/55.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/55.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/55.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/55.exercises/solution.json"
index bd521481d3a8d4e03d93684a47948ef66c5c5347..16dcdb95a4f1e33761de8455f37a2f7afb1f9846 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/55.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/55.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45777679",
   "source": "solution.md",
   "exercise_id": "d421a78bd062493383fff7b3dbb32b05",
-  "keywords": "递归,数学运算"
+  "keywords": "递归,数学运算",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/56.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/56.exercises/config.json"
index 79634612f3b4ba4c418e3024d1c4ef1554994fa8..e3a8e633444d34da0ca80e63268fe4af9cd566bd 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/56.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/56.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/56.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/56.exercises/solution.json"
index dcdc76497cbbdfcc8d6835aa9455835f7fe0c166..9ca54ff721ea8b7316507b712daefc5d69ef4231 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/56.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/56.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "hp_innovation",
   "source": "solution.md",
   "exercise_id": "3fa9f3d1423842008b789a377afdbab8",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/57.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/57.exercises/config.json"
index 0644e95c95d8751f69232659e5b0505374ce68e1..b036e6ebd3b8f6b8a3d7b6be000e216b40a6b85e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/57.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/57.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/57.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/57.exercises/solution.json"
index 16133c5d621503d305820c0ad7e0b224a0b4b90f..b983cd3ff7a8ed6a02d4047a7cb0d5191e576d1c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/57.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/57.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "lionta2014",
   "source": "solution.md",
   "exercise_id": "dc4363e2790746529e70010a643e343d",
-  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法"
+  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/58.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/58.exercises/config.json"
index 8d3d26c4983c14fb124ef4ef8514ede65b8e547c..b4b47c429939d7cebe54db9b30848a749a11f5b4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/58.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/58.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/58.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/58.exercises/solution.json"
index 6dd7c76c896380797a0cfd8df3a85fca39c52933..5267e4218b8bfd175fa74e5cf94a708d58febdd5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/58.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/58.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_43254190",
   "source": "solution.md",
   "exercise_id": "ca289aac5d3144f4a33a3588d91c49b2",
-  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/59.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/59.exercises/config.json"
index b175f6b41a4cedaf216c7ea59342bd96840f98e9..22dd0f17441d01065970a1313af3c1a5e420d2f4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/59.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/59.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/59.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/59.exercises/solution.json"
index 0890784f111baa820abdfe55d7982ed6b6778e13..ea21f9efaf2b5827aee1c366aaa240bed00e071f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/59.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/59.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "conris",
   "source": "solution.md",
   "exercise_id": "ce51c2a42ff44e23a4ff61e60774103f",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/config.json"
index db54f165af400fa15248e401d9e0bf77ac5f8527..0af5f14a68a7ff29ccd5b947d214fe65753f5b55 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/solution.json"
index 905feb01907b99afc806d22a79be1ba0779c992c..ad107959fe02dc16e7e8e83a8b724b565fb2182c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45813653",
   "source": "solution.md",
   "exercise_id": "103703df56b7460dbd9c5dde44d37af0",
-  "keywords": "算法高阶,计算几何学,算法问题选编"
+  "keywords": "算法高阶,计算几何学,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/60.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/60.exercises/config.json"
index 8eaf39a2d86c6153665cbcde8da69e54f0ea309f..f3ccc31ec4326d67a9c6a2253cbc124f7d542890 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/60.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/60.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/60.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/60.exercises/solution.json"
index 5f571b7855c715a999d2f7f11b3ed3bfdc820f4f..46495b1bad2a7dcd08eb56204af2b84900754405 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/60.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/60.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45766327",
   "source": "solution.md",
   "exercise_id": "026cef91deb8490fbdfefb164bf020bf",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/61.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/61.exercises/config.json"
index bd6d1c487fefceec8cbe9cb543828fec6c767479..c77f3750142f267b8651c08c47aa80a819560408 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/61.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/61.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/61.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/61.exercises/solution.json"
index 5e8d5c18f2bbd488b68ec784c8b6b2c30a25431b..3b0e9d9009695b587a0be3bfaa06535d87d545e7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/61.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/61.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "zhanjiaming",
   "source": "solution.md",
   "exercise_id": "76e7efc2f3e348388926bb242343fcfe",
-  "keywords": "回文,数学运算"
+  "keywords": "回文,数学运算",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/62.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/62.exercises/config.json"
index ece4df9c90a1fd2717a8c8f38e974b29e77506aa..a25051f0b464b15a131bf098a1ef75da9c023f3e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/62.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/62.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/62.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/62.exercises/solution.json"
index 0a053175e26fbf9864866d27bfad3cd40c458fe7..35f8cb520b48059cdeb0899724143d78b290d2ad 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/62.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/62.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45804463",
   "source": "solution.md",
   "exercise_id": "42b687b25f34427f9645a1c027620a59",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/63.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/63.exercises/config.json"
index 622d65c854fccd66583fecc73808cc583fc54e6f..8ea0b71ac29bbaf460b0fd5d1ac3141cbfb3a638 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/63.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/63.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/63.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/63.exercises/solution.json"
index 786b9d3ef35fe3e7d8c4603cffdc95213a2fcb9e..64b00d9eb716df3153b1f7a1ecd42142aefff8a6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/63.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/63.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "ufo27954285",
   "source": "solution.md",
   "exercise_id": "25fe83471079488494b2a35897a7ea41",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/64.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/64.exercises/config.json"
index c59f81e872a8042ee99b2c994aa084e57dac4dc0..f9d3322b00b56d39086155f1375d7e9923ba7083 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/64.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/64.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/64.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/64.exercises/solution.json"
index 34617394ee7d771be1d635ae6d55b2d2185d30e2..aabfbb6297bf767f3ece7e8ac1ed98010a1c107f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/64.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/64.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "6a96da0476194aacb15c98e7b2ad9c40",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/65.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/65.exercises/config.json"
index bf85bab8af8218d2553d2ae7ddb71e90e3097a09..a95a663378f666aa80cbb3ffd32fc0c8d467bd04 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/65.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/65.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/65.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/65.exercises/solution.json"
index 5fb1fd4a924f62a02411263dbe3cb09fb1a16dab..f0436ab01895a31f38812859be909e45aeac9e49 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/65.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/65.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "gechenyilie",
   "source": "solution.md",
   "exercise_id": "63b2c8d6c3c34455b52e21d95fa44aa0",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/66.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/66.exercises/config.json"
index 5288d316c88309aada7d2c8ae8909aa5d748c9c8..42dfe191eb7cef88adcb47f20da038cd5ad2e345 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/66.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/66.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/66.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/66.exercises/solution.json"
index bf1f5084f589bba2c7655a5e4171b18ea155414b..4c3a76ba51dc896298cc625fb21d3cc5c7b64a26 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/66.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/66.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "fulei1360",
   "source": "solution.md",
   "exercise_id": "ccf7bb16723845fdafd5fd69f2126f29",
-  "keywords": "算法高阶,计算几何学,算法问题选编,确定任意一对线段是否相交"
+  "keywords": "算法高阶,计算几何学,算法问题选编,确定任意一对线段是否相交",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/67.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/67.exercises/config.json"
index 696b5cbd37e174354b64304b31b5c5cb31df1100..dfe487659f897054f1791bc9ce54cc51c492e6ea 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/67.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/67.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/67.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/67.exercises/solution.json"
index 285aee390ac207e96c84ec11f148c85b2910f99f..5530f88f42d7e5ae3c5794b88d9f3b5515752b03 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/67.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/67.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_41623858",
   "source": "solution.md",
   "exercise_id": "2cc2ae38392241ae8d76871eb39bd102",
-  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量"
+  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/68.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/68.exercises/config.json"
index 35cd4849c4d5a2f98dab91225151a93f06cfa108..f0f20c5b6777987197cbc71fde47be8588c95e11 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/68.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/68.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/68.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/68.exercises/solution.json"
index d3fd81757e8f4273ddb6c99dacf263b56b4c07af..ba18ce5893fae2a139cf0548a454bc16675878ef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/68.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/68.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "superyiran",
   "source": "solution.md",
   "exercise_id": "f29824db6c66441296e9fa9229ae8e23",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/69.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/69.exercises/config.json"
index 5f113bce3ef7cba0c47698bdb04e077cf4530633..587b67193eb0127725fd5a2bf0aca890c26c9a1e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/69.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/69.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/69.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/69.exercises/solution.json"
index 2cde30e4d2e79e8ba51557ef6a0a7ccce22796c5..8ccf6e5ab54d2250804e401feeee93a0d1316792 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/69.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/69.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Ediwords",
   "source": "solution.md",
   "exercise_id": "732171fffb8b4f5bbec5f92aa7425b3e",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/config.json"
index 5ea4dbdbafc87be58ecc39ee67131e24188b105a..6cc1640176aaef13f4338304cfa43a96c4003d22 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/solution.json"
index 2b7a4122371a4d7043243efba37e71ff65db95a9..8856a2d9c466db678d7fd462ec735719ff8754f9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_41219571",
   "source": "solution.md",
   "exercise_id": "1ecf2a2118ca48b59e5eaaf8df2c0a2a",
-  "keywords": "算法高阶,递归结构,高级数据结构,van Emde Boas树,原型van Emde Boas结构"
+  "keywords": "算法高阶,递归结构,高级数据结构,van Emde Boas树,原型van Emde Boas结构",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/70.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/70.exercises/config.json"
index 0d092bdb578592e7ee868571e28edfdd7d3f0d25..0a21234bdcec7578707a03455397e703a7e2543e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/70.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/70.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/70.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/70.exercises/solution.json"
index 46b538fbb3eaa45a6f8800f7a84697defa0a455a..da6d4dbba31993bd0e6a4c8505a394cec6e8505a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/70.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/70.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "08e20ff0063245f98a1255e995fd9d4f",
-  "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术"
+  "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/71.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/71.exercises/config.json"
index cf5f665e30cc9786f6f5aa0ec7abeac494465b98..11d7f591adb7fa83f6ac4e47d8ac8cca66471be9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/71.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/71.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/71.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/71.exercises/solution.json"
index 19248c8e8c70bdacf350766ed39781db96a8a270..50fdc3a5349ecf96d26135d3d6a67e0cdb798e5e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/71.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/71.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_28532949",
   "source": "solution.md",
   "exercise_id": "40a27b38addc4fd49fc7e11b732d690b",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/72.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/72.exercises/config.json"
index 9ed45cef89a58875c3a6e542040f04a5ab324120..b031935e1d9a01e719cbac7e5e71d5d4c431acb1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/72.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/72.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/72.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/72.exercises/solution.json"
index b128eb10083c1a576a4bd8a6529b88f9a74d3c52..ef2641ff4423c1006fc4b02cc46e2d9d1e49b57b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/72.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/72.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "39df61b61382450a935caa80cb7c1b32",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/73.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/73.exercises/config.json"
index 2411b210f243410ab8f5476c8bab6ad6182e2d77..685050fce8869215b67889fb220682c92877e1ca 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/73.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/73.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/73.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/73.exercises/solution.json"
index bfe95750f5da9d64f2fd59a1756275bbb6189ae0..74465da5ba1619af4bc15cd1d63bdfef53494632 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/73.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/73.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "worldzp",
   "source": "solution.md",
   "exercise_id": "e2f076d8948c4d889c4350d98a9aa7cd",
-  "keywords": "算法初阶,基础知识,算法基础,设计算法,分析分治算法"
+  "keywords": "算法初阶,基础知识,算法基础,设计算法,分析分治算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/74.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/74.exercises/config.json"
index b9be9cb24246ad959b3eae5e91719cdda1ad58e2..b1c95c73249a39565791e3daa3df781dc3e4cc71 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/74.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/74.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/74.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/74.exercises/solution.json"
index d1f9e0ddc6c56ea503b34583d780162d6acc2f41..2d4c64d88a49c8006b26419c5aad8db37d300636 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/74.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/74.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "u011093126",
   "source": "solution.md",
   "exercise_id": "462fb7f7f607424488dab204267caa1d",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/75.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/75.exercises/config.json"
index cc0d2ab6308b98e211521a6420f04882f0c17a7b..71c1ced8b3be8beaeb9a80f5319605fc2de31336 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/75.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/75.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/75.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/75.exercises/solution.json"
index b651f0418ccb52afbec10f0c52076a5460496ebe..c0c61c179052478303b9201a5c1b3e1a6ccf5fff 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/75.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/75.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "help_123_cnm",
   "source": "solution.md",
   "exercise_id": "d8b00b5b1ce84bcc8d20180a7372a780",
-  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/76.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/76.exercises/config.json"
index 970686e95272a86b696481a3def0d5aef7db6ddf..7e540dc0b2d50683ab5b7282ddd3d84c109f9bd9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/76.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/76.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/76.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/76.exercises/solution.json"
index 3a3c379c7db76f253ee27d2218d3e52de12ddc9f..5177468427f15a26a7ef72b022fdb8cd889ddae6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/76.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/76.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45750218",
   "source": "solution.md",
   "exercise_id": "91f425ad15174f85978143e8db3ae5f6",
-  "keywords": "数学,三角形"
+  "keywords": "数学,三角形",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/77.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/77.exercises/config.json"
index cbdfafcf371d1f9070acd57ebcd134a43473d9bd..5f9e7453fd502e54c083864d0bb02de8c045af36 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/77.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/77.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/77.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/77.exercises/solution.json"
index c803b4cdda013141ca34a6127a9bbcd62f73eaa8..f1cf54905a0442e81642389792650bf07bf8526f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/77.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/77.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "baidu_25275979",
   "source": "solution.md",
   "exercise_id": "aa7fe92bbd9b4b039034264e025596fd",
-  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法"
+  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/78.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/78.exercises/config.json"
index 66a7603ba1cca1e6de2035e6cfc6baff5bfaa04f..5a1138df32ce1a1f6f71f9ae3c12e46042d2ea7c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/78.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/78.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/78.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/78.exercises/solution.json"
index cc67b95f448c073bdf2a363bf7dfb4727aa9911a..f25e6a60cf620c657a206599dd0014aea65e6763 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/78.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/78.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "8cd00cecce4e49c591d9a8b83a7eed59",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/79.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/79.exercises/config.json"
index 61ef00426d18c071eaa628fc23564055a8237411..cec761e1f0c1b5a09f74b0b07faf6f01d10b9811 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/79.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/79.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/79.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/79.exercises/solution.json"
index 47487b197af957a5cb6fb80cdf355690b0c7d86f..bf54ffc2047a96467cfca55bb8228cb3d832eab8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/79.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/79.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a32346e4fd59416c86e6fa9fabaa217a",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/config.json"
index 9d43b49a964ade983143d0f371af265157f6f622..fd824fcaf4fd000491f23d677a30d9e91f3b9845 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/solution.json"
index 5a9625c663a547e5fbbcddf721653ab99b8e895f..7d14d07a87e03055fa4a8e77ba337842196ecd7f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "smilehat",
   "source": "solution.md",
   "exercise_id": "9dc91baa80a849b283cfd7d314ec0882",
-  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编"
+  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/80.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/80.exercises/config.json"
index 2a349247f5ececd1025ac140a7fec41483e4de4b..1d65115a14a015b3b86c27e63698af6c1b84cb7b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/80.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/80.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/80.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/80.exercises/solution.json"
index 43a16deb5ef28b5bf6d6197a9212b2314616ac67..9506a77420455f9e86f2230c038c9f611f7f5e59 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/80.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/80.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "116a55fde6804d0597746cde94acd17e",
-  "keywords": "链表"
+  "keywords": "链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/81.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/81.exercises/config.json"
index db7ce59d94e6d2b8fa47ee612f3aba8e57017d0a..e1e0ed4fa83a6b59a2dec22b4baccabc1bb1990d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/81.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/81.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/81.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/81.exercises/solution.json"
index 48234dc1aabfd2f756c3319c9522e985955531b5..0b920967004903c0116c9dadc224b05fdfcf1a9c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/81.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/81.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b7a9ed62953d44fca37177fd5327d548",
-  "keywords": "æ•°å­¦"
+  "keywords": "æ•°å­¦",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/82.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/82.exercises/config.json"
index 3188181c5a5bba029426098ee6d77d464dbb607e..ec61a0606c3df56a2af81dc4ce0d9c310921ce75 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/82.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/82.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/82.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/82.exercises/solution.json"
index 3c444ff25dbeef20c48953c794b35a7893b83b0d..8129e1e45fc0c94ab3598a94af9ab5aa152368ec 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/82.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/82.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3dab732122934bb1b85db4da70e5f921",
-  "keywords": "树,深度优先搜索,广度优先搜索,二叉树"
+  "keywords": "树,深度优先搜索,广度优先搜索,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/83.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/83.exercises/config.json"
index 3edb5620fc5b4391639afc3c3c99501e3546741f..711e3c8fd109e592d26fc4b243cf04fdb36eaec4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/83.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/83.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/83.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/83.exercises/solution.json"
index 412943c9c43a2af15558bc76a8d25253755b585a..e80c7619cbd1aef87bc019162db1f3dd4743b6a1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/83.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/83.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3b908215610d47689b9c2463e30ba9b6",
-  "keywords": "数组,哈希表"
+  "keywords": "数组,哈希表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/84.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/84.exercises/config.json"
index 2a5e8b747dfb22cd2e84577e3770842b1acc09a1..ac03c4330c28b0166253ea0986314ae6110220b4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/84.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/84.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/84.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/84.exercises/solution.json"
index c117b948348c4e06b9dae6e028997b2fb376e713..0f350963039e71acb3dfe5c993ba3516a088113f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/84.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/84.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "92e577553712419db2d534bfbd18736a",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/85.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/85.exercises/config.json"
index 4ffa039c30c56f1dc8002660013ca1f4c31a880f..05d0810c3f8de891738c461f8d040f7ff408e248 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/85.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/85.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/85.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/85.exercises/solution.json"
index 73438138372384e67c1357f4e17be0f1d55278f4..c69ab05aaadaff477a3d23d4895d7fece5c2c77d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/85.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/85.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "06b1f69f839848c8ba12203ff5b602cc",
-  "keywords": "位运算,数学,字符串,模拟"
+  "keywords": "位运算,数学,字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/86.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/86.exercises/config.json"
index 092411b270e6dbf8f313028e7dc669bb0560abab..9d47fdde927a25910e8e0424b14b324a8e6969b8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/86.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/86.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/86.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/86.exercises/solution.json"
index 7c4fb0e54be4f88b2755ae02f3a282bceed11be9..0b36ac7c3752ad660e8a0ec832783ccedd9e7e8c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/86.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/86.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2bb10d9cca474fc09519c3f275b27a15",
-  "keywords": "栈,树,深度优先搜索,二叉树"
+  "keywords": "栈,树,深度优先搜索,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/87.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/87.exercises/config.json"
index 84ce58ac33a1ef9addabec76ab686a6205bd2639..70a103ece3760fcf6fbf9316404e398de127e7df 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/87.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/87.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/87.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/87.exercises/solution.json"
index a39962efb41e986eca9d137e1f4263fa8be13e8f..dc23fe6883d1c10acf8adaedfd3e4a9630bebd84 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/87.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/87.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e39ca369150f4f62949d81a9701a1399",
-  "keywords": "记忆化搜索,数学,动态规划"
+  "keywords": "记忆化搜索,数学,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/88.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/88.exercises/config.json"
index 4d56e3cbc139d1f3b5a51792f93c0721286ff8f7..e85aa0e38025ce220a9583f93885c38be3336c93 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/88.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/88.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/88.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/88.exercises/solution.json"
index 504d2263c196dd5693dae39cb4baf6c38d90a936..382aeb779280a2f3c54f09949e0d69d90ae0003f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/88.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/88.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7805dfcc4453460e80a12d82389332fa",
-  "keywords": "哈希表,数学,字符串"
+  "keywords": "哈希表,数学,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/89.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/89.exercises/config.json"
index 60787a29879ced883c56d55fa89c45d63e0e2c33..f03c7359f7c89657c56ab2ccd02d48fed172b077 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/89.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/89.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/89.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/89.exercises/solution.json"
index bade46706af1e18b0f4381740c70a16a3eed1102..f5fb252a7c65e2f707aafdf7224ee25e1c27ecc7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/89.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/89.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3e790bfc8db24efb9e633e09abfa98b4",
-  "keywords": "数组,数学"
+  "keywords": "数组,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/9.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/9.exercises/config.json"
index cff076e54b8c790e57d81cd5eaa5fdccf4117f62..8df3bbfdb69a48f81b7230f04acc369123617a2c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/9.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/9.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/9.exercises/solution.json"
index 40b77d3692f424ae08a1bdf7abfa07b57576fe18..05606afb652bd0fc7e8ff789c68f1c31df71d892 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/9.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45809205",
   "source": "solution.md",
   "exercise_id": "e4e50444317049bab4a6f63b3f631c59",
-  "keywords": "算法高阶,计算几何学,算法问题选编,寻找最近点对"
+  "keywords": "算法高阶,计算几何学,算法问题选编,寻找最近点对",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/90.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/90.exercises/config.json"
index 541367274438a09950c55a120e08ba16bec6e829..46e1632cd68653528902a8631484c37aec70f16b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/90.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/90.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/90.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/90.exercises/solution.json"
index 64493601a016a9a9141aea4c9c3447bb77b05a85..23d359d30009d34c4af000a75d2d71595db5dbf8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/90.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/90.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5711d8373ceb4bf792674b48470a992f",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/91.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/91.exercises/config.json"
index 81d40a90b2c41c9805c8d1b1b92f68325f9e08d2..e6646c53ad0daafd88d79c1a06826e4fd9e11290 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/91.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/91.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/91.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/91.exercises/solution.json"
index 4ea4aaa1cf2212e7013cb0c559d7127a73d05a69..351a0808121200379b40563030731115ff4bf74e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/91.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/91.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5ac00270616644e09618039fd1ded545",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/92.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/92.exercises/config.json"
index 2ee3b4796e4daebdeb7f4d3f28d3f4a6c17aaa32..552aced1f99a2f6f35c18359bf20e4b2bddf9f95 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/92.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/92.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/92.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/92.exercises/solution.json"
index 72b6c0c0fa9e067f64da36dd26b27a147a2f3cae..4982ebd5fa5b6af3d0d2ee248e9faafe0f6b72ab 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/92.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/92.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1227f881a77741199e38d9fa69318778",
-  "keywords": "数组,分治,动态规划"
+  "keywords": "数组,分治,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/93.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/93.exercises/config.json"
index a942bbfda7ea32e828c05bb9e12d52b84c73e965..bce3e9971404f70a206d733b01ad9c0fdaa463fc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/93.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/93.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/93.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/93.exercises/solution.json"
index 46e984406f373d9ce937cd67d2582af2d80470e6..1fdf692c4ccf1f5bc00fa6bf516777abc08869fb 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/93.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/93.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3b5534cc405947d595b17441f3433545",
-  "keywords": "数学,二分查找"
+  "keywords": "数学,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/94.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/94.exercises/config.json"
index 394189aa17ead8770a833e521fbe36f1cc5b299d..1d4c7ace258d7302d24454938d82d07a07616c5a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/94.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/94.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/94.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/94.exercises/solution.json"
index 2771539b553859a2b620373b6464c86d43550638..1c2cb97a6551ed8b96b7471f8da47955d7d8d2b6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/94.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/94.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "dc0bf68a76dc453a868c0a58681e3d5a",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/95.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/95.exercises/config.json"
index cf0a9a9ef08ab4445c1cb49f25d8c302450ea16c..b352e2f948519b99f52cc5993adc3649f69d7b49 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/95.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/95.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/95.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/95.exercises/solution.json"
index 76f23079233b506101c9bd4f0551b4d87ab917fb..a0f83587b7da25c669e44e3318f3bdf35179e60e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/95.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/95.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2a48f3f173ad4d5eb687f2b17a53d8ac",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/96.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/96.exercises/config.json"
index 3af31bf04c299e910fd7c1cfff063162c12d6e60..9b26539546a2c46ceb0e36b1d78d6a853fe439c1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/96.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/96.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/96.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/96.exercises/solution.json"
index fffd04ba4aa3466e5fe32647332f1ebce3958314..70b05ea98872e00b2e23096c2abeccdbafeb4dba 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/96.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/96.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "ed12c78eeaaa4be48f0df44b75ae9c2d",
-  "keywords": "æ•°å­¦"
+  "keywords": "æ•°å­¦",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/97.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/97.exercises/config.json"
index 1058c5fba1876b84955642757b6edac39739202b..356d17d4734b67d4821171f877a1f8ce4a7f8743 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/97.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/97.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/97.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/97.exercises/solution.json"
index 76928ec715f06c519a9a433c25a321649ab50833..382259cbcbf1e19440dbe3575a2b0f9204d17fae 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/97.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/97.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "23e1a80294844a3b9c03b1e3f05fd40a",
-  "keywords": "栈,字符串"
+  "keywords": "栈,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/config.json" "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/config.json"
index d33fbafc6146c8854be89d19140dbfe847ae5f67..b44b6caa9b82eed13c3ab98fd32dce7227bc3bd4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/1.cpp/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/1.cpp/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-516b53e0db6f4fcb85d393644eea6fa9",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/1.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/1.exercises/config.json"
index 3935a823b94b29070c74491cf17841fe9f67b8df..601f991404e05570e97198645f966f39aeef5048 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/1.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/1.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/1.exercises/solution.json"
index a2ae974a6e9ae12c74f187f4858914838e1ce080..aa488d128bf4b1a34638ed9902400efdffc33a11 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/1.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_30332037",
   "source": "solution.md",
   "exercise_id": "db433b9b23c3428da71be4db3d42bd7a",
-  "keywords": "算法"
+  "keywords": "算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/10.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/10.exercises/config.json"
index ec2cd3e6a599aa8863c62c016014d5c292af47f4..0443fad047003c67e958c4141604f6903e23ea66 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/10.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/10.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/10.exercises/solution.json"
index 0f5de86dcb9f746081b82ed143194e9170edd9a3..bd67e18a6d923ef2f6fec26343aee77e8c7c3668 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/10.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "hunter_zy",
   "source": "solution.md",
   "exercise_id": "517921eb39ac410daba02fb3929b3eda",
-  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编"
+  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/11.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/11.exercises/config.json"
index f4b3aba77a6942635881afd1cf405f6c8dedce5e..5a2d3524ae8f5fe97778de3e92a5c80cad6fdd48 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/11.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/11.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/11.exercises/solution.json"
index f9b88c6febb59ac4ea8f12e9445927002f3c91f6..a58ad17c30a42ae47706e4773affeedcf9bc79bf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/11.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_43971572",
   "source": "solution.md",
   "exercise_id": "4f48e2c5da0e4ac0ba8a9aa09f2bc7a8",
-  "keywords": "数学,阶乘,算法"
+  "keywords": "数学,阶乘,算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/12.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/12.exercises/config.json"
index 77d5c9926eec1f0caa593cc6185ea6984d1b87c6..cc26570cc05dbf5efa7d2883046a3f4029d2ff96 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/12.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/12.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/12.exercises/solution.json"
index 50c230b4371b0bf5fb43e5206d62ece76decf413..3e8b6bf704324cac22f83b0b3bf32bf907f14ec1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/12.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "liuyuefeng26",
   "source": "solution.md",
   "exercise_id": "0120fa66c9424a8fb367615492018524",
-  "keywords": "算法初阶,基础知识,算法基础,设计算法"
+  "keywords": "算法初阶,基础知识,算法基础,设计算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/13.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/13.exercises/config.json"
index 90f01cc03f6b4292f7666fcfae4d8178e3090152..dda86c7c28c8e746940c4bedfa31c9848da55eb9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/13.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/13.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/13.exercises/solution.json"
index db05ddaba7f062f529ed63c7b743747ef2f72221..943f84e5c94a7279298530805b182b453f0292ce 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/13.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "conquer2009",
   "source": "solution.md",
   "exercise_id": "de83b7d7036b49fe9c0bc8128810f14e",
-  "keywords": "散列表,散列表,算法中阶,数据结构"
+  "keywords": "散列表,散列表,算法中阶,数据结构",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/14.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/14.exercises/config.json"
index bb7be8fdf17c295177ee2c1760f88ee89232d1d9..ae2b2914ede9c910e73db34baecc590348ffac07 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/14.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/14.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/14.exercises/solution.json"
index ebdf3da8cbadc15344cb1489c060eaf3c05bfe7e..db9ecb14b924b112a2620415131510e02f12b1e8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/14.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "86be439d4197480e82a4fb53964fe650",
-  "keywords": "算法高阶,计算几何学,算法问题选编"
+  "keywords": "算法高阶,计算几何学,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/15.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/15.exercises/config.json"
index fd4351ad9c1842c7ac87d5ce52fea59e510cca87..145f637c602a8219aafa6be62ba651f4b95c6e4e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/15.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/15.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/15.exercises/solution.json"
index dac893f97ae3a600a912a779bfd4639a455a16e5..80d2659f75bfd86a76afbb6a3e2f75d725fa683a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/15.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "rorger_long",
   "source": "solution.md",
   "exercise_id": "f6d4bb136fef4aae992e14e46832cdcb",
-  "keywords": "计算机"
+  "keywords": "计算机",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/16.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/16.exercises/config.json"
index 561ed4384f47b694f6d1b1c519ee3ffc63010ea5..31bddb811c09090201079d49f881a8fb494f1eee 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/16.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/16.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/16.exercises/solution.json"
index 04734528599976cc7eff83b81bc55c7a8c936265..805799a330e0938553ecf7b58b4e3bc2fd489e82 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/16.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_14889007",
   "source": "solution.md",
   "exercise_id": "f03f64b19771450cbd73e10f1d38a4b1",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/17.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/17.exercises/config.json"
index b527128b3a0898aa0b4067726643b1752dc1d981..b1885b0750e346826630f760af9dfb33cb5a71fa 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/17.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/17.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/17.exercises/solution.json"
index deb06816709d54381cd23b21ef3bc4653ceb8812..41ba3a850bfa803058df0eebed54378a50498a77 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/17.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9bae5eb668d742cc94366b2f419e55d1",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/18.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/18.exercises/config.json"
index c43f1fb7a281f3ec572e2d6139fc01dac17d4cc9..4681d613fc25549b78a7ca15ca9b76d0af8f4e97 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/18.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/18.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/18.exercises/solution.json"
index f6bd60b6be3d6eb7e6d50d7e590527621c544c2d..d3e20bf4fbf7e39eacdf8271282c1fe13dc70a88 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/18.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "sinat_25701101",
   "source": "solution.md",
   "exercise_id": "3576db7f962d40d09401af1997fa4566",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/19.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/19.exercises/config.json"
index cec9089aca71eb6a2e0f86cfc287f5a52e492eb4..c527d6249550f17bb9e76b4b90ac7e7c3a764572 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/19.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/19.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/19.exercises/solution.json"
index d2a4d5494098891608670892d750714889a6047b..6aa60d9fa6f4aaec8b604fa4e05ad993da71c3c3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/19.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "xiaokanx",
   "source": "solution.md",
   "exercise_id": "061d051da6994ef4aad7ea7053f48e4e",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/2.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/2.exercises/config.json"
index 3dbe3f4bba894a0bcee7b49757d9e0a3b1afcc05..b36ace1685da815df8b44749e55c64bb0f992957 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/2.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/2.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/2.exercises/solution.json"
index 33017241ff506fa773f9163645f487afe8333992..50e694502aa6b49759a3ebba7044c303009d1aa6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/2.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Sakurajima",
   "source": "solution.md",
   "exercise_id": "f7328cb8610e442b869fd26020904955",
-  "keywords": "æ•°å­¦"
+  "keywords": "æ•°å­¦",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/20.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/20.exercises/config.json"
index 23dad8942a4f40e4ad5d9f232807c8b310e9ecb4..50e4ee8baad3bf15921cb4930a501483a2ea2f6a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/20.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/20.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/20.exercises/solution.json"
index 8713c4e7d188eca91012b33cc3bb946e5506815a..52fb55704bb62fe82b0e882225abaf57af612d33 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/20.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "gongyezhibao_",
   "source": "solution.md",
   "exercise_id": "f5e2e3b7527d490a85584780762a813f",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/21.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/21.exercises/config.json"
index f7ee58e30a9e7b96d49cb93f741c563806fe0ebf..46834594e60de97cf01ff27df0694fa0d191c76e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/21.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/21.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/21.exercises/solution.json"
index 4d362a7d06e4c29676f3f3947045990268e7d74d..17ee9df9ed3a028ee2c5db4f1e502e1df550fadf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/21.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/21.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c2629a9c980e4fd6a5da7c8179b0363f",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/22.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/22.exercises/config.json"
index 33fd71bce9177d518012b6102300d8432f699503..864e6283544874a9361ecda16727aa59b803a960 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/22.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/22.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/22.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/22.exercises/solution.json"
index 8f58ae082e77e286e8df297d3b73d17840677ecb..2318fa19eca79e9811e81bf2b471e5f4a21cbf28 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/22.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/22.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d99b0c96e52342ec9c55e02652371148",
-  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法"
+  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/23.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/23.exercises/config.json"
index fc37a1765d939743493b85a92ca3a1ae2760694f..855139fcc54a03ef594a8ab027ed88de6481f9ef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/23.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/23.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/23.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/23.exercises/solution.json"
index 3ca4d64e8fdb5bc68e3cbdfa363510555b01ea0f..de6ba8d87e2ed808303c103206587a75314a1971 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/23.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/23.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "u014805062",
   "source": "solution.md",
   "exercise_id": "1261b1dc25094bcbb3038acde60e41cb",
-  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法"
+  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/24.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/24.exercises/config.json"
index 24455e8a8acf0932ec1ba2975e342bb94ea69ec4..936b58556c5112bff191dd049c289be1c9a36715 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/24.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/24.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/24.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/24.exercises/solution.json"
index bdc527c179cc441d9cf7d4ac2a9c89d6cda5cef2..4bdb29e7daf31a053cb53cb8cc9a1eef38757e5c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/24.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/24.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "lm13684864703",
   "source": "solution.md",
   "exercise_id": "55656322f3944cb79f0d37a097b877bf",
-  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/25.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/25.exercises/config.json"
index adacef72f7e27770ab5375d0402ec0e43512e452..56c2eb5ec8a11b5da9f9385530223c45d084f4dd 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/25.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/25.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/25.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/25.exercises/solution.json"
index 0742dfe2d50ea9fbedebc0367908247b9a6231c8..5a56800cd6dc32583e29162521407158787c43fb 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/25.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/25.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "cjsyou",
   "source": "solution.md",
   "exercise_id": "959f627ef9dc4756b005ec647428533d",
-  "keywords": "遍历"
+  "keywords": "遍历",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/26.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/26.exercises/config.json"
index 242bec9dfef925f7bb5734844beb454af640c100..03150b602a284a33dc6b4b1a0576813f630abef8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/26.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/26.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/26.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/26.exercises/solution.json"
index b99168934efff7b5064bc4f0177e61b4359dd8d9..57ca0aa75c99d776a0640c987d527c082ab55ab5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/26.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/26.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "shankezh",
   "source": "solution.md",
   "exercise_id": "40c109e9bf714724a757a5a423c4c529",
-  "keywords": "算法高阶,计算几何学,算法问题选编,确定任意一对线段是否相交"
+  "keywords": "算法高阶,计算几何学,算法问题选编,确定任意一对线段是否相交",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/27.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/27.exercises/config.json"
index 159cd1ddbf94453ccf03bd8a505373a67700e0b3..c4e86bd7e1d142e352e669866a7dfdc7b795b35c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/27.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/27.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/27.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/27.exercises/solution.json"
index d71d9e78f6438b1126681d8cc54f38f15921b94d..f82fd48e032a328edbefa7d416ca04890d452413 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/27.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/27.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "81a61e783574465a8a4caad87533ac75",
-  "keywords": "算法初阶,快速排序,快速排序分析,排序和顺序统计量"
+  "keywords": "算法初阶,快速排序,快速排序分析,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/28.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/28.exercises/config.json"
index 1bc428203fb5269d14d21c633de48d48c51fd7dc..409cc070069ec14f7d74e48a7cc928e04b978c72 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/28.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/28.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/28.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/28.exercises/solution.json"
index 6132cdbe9ce5af5b486c00d9cfe9827976e6058d..9ac5da410904c1f1d15ab64bd08f23fac7469872 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/28.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/28.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "bozi1234",
   "source": "solution.md",
   "exercise_id": "76497293532545198c02900e03da83b8",
-  "keywords": "算法"
+  "keywords": "算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/29.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/29.exercises/config.json"
index c2bed1a29920a0c10eb0a960ad5fb20873e38117..caf5d7b74d4f5dc00d9d5e4dc2ba594d40bf05db 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/29.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/29.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/29.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/29.exercises/solution.json"
index ffae8e667d6975ad0666af6cc7acfefebcf21f43..6810a94fff0d0877d52e8be23d0b01bbb684c74a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/29.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/29.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "92219efb4fef47779e50e27675c3fc08",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/3.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/3.exercises/config.json"
index 8ac4c5cd3782c04cdcc6bf2b79b84dc5728328ba..acd7463aa846f1652c0deb10ddcbe80b93245aca 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/3.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/3.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/3.exercises/solution.json"
index 3ca32c4ccebdd253c681940c1f7d8311e9369b52..331e4dfc28d881064011761c009180a0e306815b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/3.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "hello_chenchen",
   "source": "solution.md",
   "exercise_id": "4d7e67df30b441d4ab27995957d4ce62",
-  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法"
+  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/30.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/30.exercises/config.json"
index 5f4ebc5e56659c6bd045988aca3eb054e764d73e..6d9c738c39e9f457bb02729cc7e7ba1e5bb5a165 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/30.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/30.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/30.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/30.exercises/solution.json"
index 158aea26e33eabdd35e8b29cd975bfc327f2ad84..97dc31d77296d0ad4a922cfc5099b75e8cbbf321 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/30.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/30.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "33a2e1cc570f49b5a2eb1507fd06ff93",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/31.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/31.exercises/config.json"
index c589ceab1f9d77a4be21abcb05273441ebfcd920..6c109679e64c1154f95c203cc9b8d709c1caacf5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/31.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/31.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/31.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/31.exercises/solution.json"
index b82858393e10d358100a5323beb3245ef9a268de..8f63323e96d833159e91a626a18c0c3847751f1c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/31.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/31.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "417f0b913c0a43d6aed69cf4e2b2411c",
-  "keywords": "链表"
+  "keywords": "链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/32.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/32.exercises/config.json"
index 2c4fa4a353664d0f94f0a34e6de5fdeeb48a1f48..a4bef5eb6242176af6de07e296348f90b467bfd1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/32.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/32.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/32.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/32.exercises/solution.json"
index 87b814c6cf4e3b5e9708a708f36790982610b9ba..f666960ce072a5378419efefe44747f0cec7627f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/32.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/32.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "ba22712f140940d78024eba6e982edc9",
-  "keywords": "æ•°å­¦"
+  "keywords": "æ•°å­¦",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/33.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/33.exercises/config.json"
index e95e5f6cb7b24ad6146f1284fea7faaf19d779a4..30cd065f396271766767c320ba13195b82629175 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/33.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/33.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/33.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/33.exercises/solution.json"
index 9018ecb07f4d01c004d9db5d0d154656ccfe7478..6cc4b49dc5cac3f3d14e66c4ef873dae8ac1f8cd 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/33.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/33.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3e1078cb13894e2f8d6ea870bd43f907",
-  "keywords": "树,深度优先搜索,广度优先搜索,二叉树"
+  "keywords": "树,深度优先搜索,广度优先搜索,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/34.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/34.exercises/config.json"
index 36c783c611bb6d1b480f45afea582557ba6f6b35..32368a31bb8c37b367c2b0a3bdaab3b42add98b6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/34.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/34.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/34.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/34.exercises/solution.json"
index 57d59369cc719c5ed344d25d5770a4a1c02bc9ac..377f5d112daee344755d4b5bee0658571004e3af 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/34.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/34.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "82aaf8b8a58b48538f12023fb9c12101",
-  "keywords": "数组,哈希表"
+  "keywords": "数组,哈希表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/35.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/35.exercises/config.json"
index e02f6912bcae413e9e6db938aec45819da5b95ce..015ea3244ef6333016ffb13db2aa25168f23ccad 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/35.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/35.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/35.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/35.exercises/solution.json"
index c38440a6be328632826465d2c8ff2c14f98c7218..8c0d743e28c647f2b0e9f66d68db581a850cdfe7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/35.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/35.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "36890a914732484c9078d992ee2e732a",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/36.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/36.exercises/config.json"
index db0c514088d281fead21a559032de513ac7d8bc4..5824119ebedd23efd5b0aa60602deff841f40c0f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/36.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/36.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/36.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/36.exercises/solution.json"
index e8d43700eb9ac3a6f489f50d8ec043446d387cd9..be96b6fbbc9c833215fd122fbaced2b15e78f86a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/36.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/36.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2627bbe764734181a8fea0dfd6b97207",
-  "keywords": "位运算,数学,字符串,模拟"
+  "keywords": "位运算,数学,字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/37.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/37.exercises/config.json"
index 7a672932deddb2d9faec8363574aafae1e19f428..30968942c47a49a763ecff0d27818f46a7f44d2a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/37.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/37.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/37.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/37.exercises/solution.json"
index 87a3765f0b2b107b8193141bde88eac017f64faf..f76c42794aad1f452674daf79712e638750e018d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/37.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/37.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "bf4e99852b054ed98d78964a6eca8ed5",
-  "keywords": "栈,树,深度优先搜索,二叉树"
+  "keywords": "栈,树,深度优先搜索,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/38.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/38.exercises/config.json"
index 19e29119a2b2845e826d4b00e961f9ded37eb14e..195aaf2bfd046d606270928e9f18e3dd41274ad2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/38.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/38.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/38.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/38.exercises/solution.json"
index e23f471e009ac20610953c308f1df6c2df226219..65e40a5aed9f1157ce4d8477f81f7bd5a9858349 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/38.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/38.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "6c7ce7b18722435fb30547af551dd756",
-  "keywords": "记忆化搜索,数学,动态规划"
+  "keywords": "记忆化搜索,数学,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/39.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/39.exercises/config.json"
index 1436a1a093aadeecc6081f71df66d1e1f9513e1f..81340ee5911fe54be33a16cfce4eeb6fa04e50ab 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/39.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/39.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/39.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/39.exercises/solution.json"
index 580436259ea6061f7aaf376fc874a88b6501e1a3..7abfeb7cb2b1d3441a84d424147cad084a8613db 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/39.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/39.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5f2f366695ff481bb1208fa2539172ba",
-  "keywords": "哈希表,数学,字符串"
+  "keywords": "哈希表,数学,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/4.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/4.exercises/config.json"
index b52355f91fef57f371681345f8ae3862926fa272..7250661df89ff75b085917e0ca50d5a939876c72 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/4.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/4.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/4.exercises/solution.json"
index ae5b8d07fc3ec2b7b4813d709666b1cc4be7d420..eb5948cd4d770f33b505237c3ac099abfde669a2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/4.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32741781",
   "source": "solution.md",
   "exercise_id": "17dcafe1edc8444ea6cea1bb82bbac67",
-  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/40.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/40.exercises/config.json"
index 378805bc0e34f264e6f639cce7d5d3b8539d8e06..b73c4fea14d05d589a33dfff86adf630357d061a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/40.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/40.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/40.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/40.exercises/solution.json"
index fdf26c54c86963f52496177b4893c0d6c9310253..87bdfb81531a2d4bd56d39b5f286be2cd75308f7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/40.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/40.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5095334c03264298b61cdf36a5f3602d",
-  "keywords": "数组,数学"
+  "keywords": "数组,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/41.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/41.exercises/config.json"
index c12284ef6c1cb7161cbc5837d8ef54b9bf2b7c16..26a3c286088836d39a7bd9e8b86e6ba78e756c0f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/41.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/41.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/41.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/41.exercises/solution.json"
index 3dbac30c48875a9e5ac5545921e8fbb202356fc4..de4245bd81df2a868bcc9cf129da2a1a2b76a0ac 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/41.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/41.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "521d27470d934267b7faf7d0cc2212c0",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/42.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/42.exercises/config.json"
index f76529657759ab4225bbebf554becfd52262cd7d..e3cca375b15dc75fa73a54599b3b58d8f6a91c84 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/42.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/42.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/42.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/42.exercises/solution.json"
index 4ff18ecfc225d5abac29c5cd8835af73d9ff3400..676b8b3b2e12dcc5257303d33756bcd66c354982 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/42.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/42.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9a0992991f5b49779b019c87b3bdbcb2",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/43.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/43.exercises/config.json"
index 4dc41d0154875b97b131a55f4c53823074745cf5..c6d168ae5570b13102e1fb4be240316f5d303e77 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/43.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/43.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/43.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/43.exercises/solution.json"
index a69f00cbe6ab92473c7745e712dd47d61ba95c7b..41987a98d5780f3addf8a6388822b0cfca2ee165 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/43.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/43.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a53ecd2c41fa4c10ae30759ef1229b6f",
-  "keywords": "数组,分治,动态规划"
+  "keywords": "数组,分治,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/44.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/44.exercises/config.json"
index 447e3e2a72b2309a9319620c7501453c62eadbd4..0f95d92425cc381fb9d694d56e9f766acf5c9677 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/44.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/44.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/44.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/44.exercises/solution.json"
index 5338965b8a8feefc2c103a2a60cf1688e83e4275..da01e019d61d47d759000c2ed68b78ab4cc6ebc2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/44.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/44.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1a3c7b78b2934efd89a842dfa71f79ff",
-  "keywords": "数学,二分查找"
+  "keywords": "数学,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/45.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/45.exercises/config.json"
index b2160004c974b155552fadd542881d8f67e9dcb4..94e369c5e972d042dba617553545181820f78192 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/45.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/45.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/45.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/45.exercises/solution.json"
index 41bddb0ab022a3f821c409935b1a83081971db2a..aa1b17f7c5c1e06b5ecb112206ced4bad716f882 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/45.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/45.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "be127eb3d2ef453ab35df80d16cdcd73",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/46.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/46.exercises/config.json"
index 84bc4d12ed50361570131813c3e0bd1c99e779dc..6d2efb604ba537edea7d78c5745864e1a4720448 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/46.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/46.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/46.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/46.exercises/solution.json"
index 5224447329ee1b4cef0cb5e51f3cbecb65fdfc97..d34689eded5a1e7de80e7b5852a8f0b3422e5fa7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/46.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/46.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "383deea124124fc3af6f677fa1cf9305",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/47.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/47.exercises/config.json"
index b58ded2c937a39d0ab3eeef4ebefe73914f55681..20e2f633dde6412c1ac937c19a0dfa042fd1f7cf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/47.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/47.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/47.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/47.exercises/solution.json"
index 2f4d4cdd97b1eab86f58c95fad8d58ed1e143706..15d2152a3354cdb6da3920c9f94a072010897754 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/47.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/47.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d027b4d8ed9e4cf8bf94deb1c90d6320",
-  "keywords": "æ•°å­¦"
+  "keywords": "æ•°å­¦",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/48.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/48.exercises/config.json"
index 11c7ab9dc81bbc3161d99397b72a98425ac9763a..2e018c3b1dd7add2aba33115233b866ef2e6e06f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/48.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/48.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/48.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/48.exercises/solution.json"
index 9a8549b5052a1f0032076a187f786a5a1899a07d..a823a59deadafbc4005f7dd038052553fd7ccdef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/48.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/48.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "6b15cf2f03a14e478ddc2c2d135852e4",
-  "keywords": "栈,字符串"
+  "keywords": "栈,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/5.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/5.exercises/config.json"
index beddc8182c7fd674726c9909766f944e23c7a559..29a66e28b67c41087246186e5b5a2cbe88f93934 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/5.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/5.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/5.exercises/solution.json"
index b2523de8ec4987dcf1121e7bc2cd82e682b8afc4..920825ded8aff75be3d585c3fee0fb64a7a205ba 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/5.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "aiZenobia",
   "source": "solution.md",
   "exercise_id": "90db1431b3b0440ab4b6368a5053f42d",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/6.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/6.exercises/config.json"
index 85c838e77a31256e7fb089eff328954fb33f020a..d2dcc79efb6b33d73673224051860ec609889452 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/6.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/6.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/6.exercises/solution.json"
index f71be0b6989d8cd8aa5018138576379a79f381a1..825cf93e2b72e4c34a9c4fac4940e8cb1e66fcb3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/6.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "k88oo",
   "source": "solution.md",
   "exercise_id": "12524157eec6409ab1b5e93fc9141608",
-  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编"
+  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/7.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/7.exercises/config.json"
index b28fe68e321d689d750015b6793f8f531eea8c60..2ea677b18e354a89850dcb06b55a6c36d85ced1b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/7.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/7.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/7.exercises/solution.json"
index feb28e550817f7038f2b9e678b6b7dd6f293bda6..baa3d561c9c5721a2fc40ecabc27be0d340841e5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/7.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "98907681bd8443f1b226bd2fe6710cf8",
-  "keywords": "排序"
+  "keywords": "排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/8.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/8.exercises/config.json"
index 5ac920b034c32a7bfbc290189f6953ebe1ba1c81..0c406ee294c331e016d68b30d146f7b8231c2a6f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/8.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/8.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/8.exercises/solution.json"
index 2a14ab40b412762503641fb872119ded4d6768cc..599eaac1b82751d034500821527e2afe2680125a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/8.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "limuted",
   "source": "solution.md",
   "exercise_id": "7896b88027e34a4ea6de980d35e10418",
-  "keywords": "算法初阶,基础知识,分治策略,用主方法求解递归式"
+  "keywords": "算法初阶,基础知识,分治策略,用主方法求解递归式",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/9.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/9.exercises/config.json"
index 9bab691a94d931fe46a29b10a2c961f20ed0b075..d0d441c88d26bf4d331db545d8d934dbd5ca5024 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/9.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/9.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/9.exercises/solution.json"
index 862444f4ac97a1210e976b505cb8f6909d9a3aa5..5c58bbdc118b2e49d3d6f4f24265aaacd35827ac 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/9.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "peter_8187",
   "source": "solution.md",
   "exercise_id": "1815b9aa7eeb4aec927a3b93ad258801",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/2.java/config.json" "b/data/1.dailycode\345\210\235\351\230\266/2.java/config.json"
index 7e2f5b73f2a8633fdeeb572e725ac71827c9d465..c083d71e57cb7edb64bb83581d66f7e76e461a8d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/2.java/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/2.java/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-aa973b9977cb4929a22ec6c657d84644",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/1.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/1.exercises/config.json"
index c36638ae42c037466d97e8b69790d4e549f4a856..c88e55114d7d5cdb4a4a42b1a7921fe75fb57086 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/1.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/1.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/1.exercises/solution.json"
index 6cda165e5d93f249bc6f8d0120ff35e93200befc..0ef701cf0c0af84407e7a88b407bd57ce014fb09 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/1.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45737171",
   "source": "solution.md",
   "exercise_id": "6c50862d32324cd692f96c3d58c51115",
-  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编"
+  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/10.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/10.exercises/config.json"
index 2657085cbd76f2f235de1c08e542e2ce22669336..16d3b006e877f67a3f4a9895b22b8fcbfad858d8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/10.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/10.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/10.exercises/solution.json"
index b3da8e82c5ff038c6b089a1e0e134f275d34fd65..de7614f815cb64940ff0b5704d9233ee900f878d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/10.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "y24261624",
   "source": "solution.md",
   "exercise_id": "d6b1bd5d6de4490288108c61d739ee4f",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/11.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/11.exercises/config.json"
index a72bd5ffc30fd0a54c857ff15ac105a9aee6fd4d..d463368c2965e635d727f270f09f94c61e2b1cf5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/11.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/11.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/11.exercises/solution.json"
index cb9a6f5f6eaa3ecf6be74e4d754873193f590083..1f0343698eb02ab687e3aa7a6ec3de29cb00c561 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/11.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_44687324",
   "source": "solution.md",
   "exercise_id": "ba09366f2adf449c8dbb2f90b7033d1b",
-  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法"
+  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/12.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/12.exercises/config.json"
index e031df946f8df1e50db2c6247d8375f3282b7372..c44fc518b6fff6fee64efbe74c3c9063700c3ec6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/12.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/12.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/12.exercises/solution.json"
index fb05832c7378969467dcef7a403935dadd3dd605..beebac3caffb4851c27ef2a56e5a46dac951492d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/12.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "xlqlin",
   "source": "solution.md",
   "exercise_id": "e87e276f38b048e8889e2fe7fe79b084",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/13.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/13.exercises/config.json"
index 6837750b541210ffb295cb40150cd02291ee2890..3de2373072b9929ba0415d5ce217f3ea32837fd8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/13.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/13.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/13.exercises/solution.json"
index 898bb1a659dac4cc897e5a52dce8163bdeb140c2..c16d1f5bd81de2bb1c33d5c2b683e7cab33b40c5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/13.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "carollulala",
   "source": "solution.md",
   "exercise_id": "3a3ccc34f57f4f07892bdf339e218f48",
-  "keywords": "数学,奇偶数"
+  "keywords": "数学,奇偶数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/14.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/14.exercises/config.json"
index 12b73dc53517a02c68cd6ecf075e98cdcf92e412..11b7d811522136e448cff89ae43bd2f3447ede5c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/14.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/14.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/14.exercises/solution.json"
index 48b204c697223903ae4767a8d326c53f56baa350..a9b2436b443a74b6c36d544d198f0636d2bfd989 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/14.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "hjzmc_1",
   "source": "solution.md",
   "exercise_id": "3da60a14561e42a0abd5e52778d30ec3",
-  "keywords": "图算法,算法高阶,图的表示,基本的图算法"
+  "keywords": "图算法,算法高阶,图的表示,基本的图算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/15.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/15.exercises/config.json"
index e0aa73a73acd7790d3ec7337df0eea42e76cba64..7ea1b083bf1b174d7c3967c0a7ad3a2d9749a838 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/15.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/15.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/15.exercises/solution.json"
index acb6bf8dd36eea6e6fb0678e39f5403492ab8f47..4b076906984c8e6a2d920b4d133c724938066249 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/15.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_30937093",
   "source": "solution.md",
   "exercise_id": "17f01393a3a241609477ad9b49eae5d7",
-  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法"
+  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/16.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/16.exercises/config.json"
index e0bd3e98e4b7b1dab14c0eadc825b395ed3d2b32..f25bf7539fb9d92a8a4d19315a1d4d5ff3c6c83a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/16.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/16.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/16.exercises/solution.json"
index b6448f939a5c5b404756c4794869416f9d5290a2..55aea61579d69110fc67e16a431e3972369b1da7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/16.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "sinat_25884075",
   "source": "solution.md",
   "exercise_id": "f9b2a164ce2a4d7f8820a5d690b69389",
-  "keywords": "散列表,散列表,算法中阶,数据结构"
+  "keywords": "散列表,散列表,算法中阶,数据结构",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/17.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/17.exercises/config.json"
index ffdff6fc9dbbaf2c9f63781acd970e318739906d..e493748c891e0795973f8a56879d36083e1c0adc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/17.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/17.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/17.exercises/solution.json"
index 6ec9f0bf61bc7c957e0250d1fc27a790e8c97348..c0b5e63f51337c049dcb3d21148279477b7f7b0d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/17.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45797598",
   "source": "solution.md",
   "exercise_id": "1cd4d9de21f34c9e921c06dc12d6fa1e",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/18.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/18.exercises/config.json"
index 45a7fac4cd6797f6b6340c4447e5b175b7281de5..f2e0635159866b097500c11807355847e754a964 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/18.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/18.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/18.exercises/solution.json"
index d02b50124b4b07c10084b91ac7bb1a0298ecf13b..8b34a79fc1f4b4745afb06846d8da7c65bf70657 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/18.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "EricLao",
   "source": "solution.md",
   "exercise_id": "efb125b11d0d4507b438f6441c32718a",
-  "keywords": "排序"
+  "keywords": "排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/19.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/19.exercises/config.json"
index 826144cce5bb831c7a16251b042024f3659de9fc..dd4f746b70927ac0c8d38222bf985e009c636966 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/19.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/19.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/19.exercises/solution.json"
index e502a6072ace08a8d8cb7577ce3595e28e1beef7..bc52f51997bda1736cf831a56c525f219606c941 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/19.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45635763",
   "source": "solution.md",
   "exercise_id": "03803ff6da3b419e8e9b650e8635444a",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/2.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/2.exercises/config.json"
index 90fd9aca3dceae427a05c37d4152113855b4d852..0fd62a6b74d80e71964b01d61b6764590418d9eb 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/2.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/2.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/2.exercises/solution.json"
index d6340891616fa547fd0410eb44280f9c59b35c33..1ad06496ac6c2fe238b9ae32d6960e7c8e91a9eb 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/2.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45098891",
   "source": "solution.md",
   "exercise_id": "92020885fd7041279222c4dfd3ac8a17",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/20.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/20.exercises/config.json"
index 054d557a3d5a3ba63e4512c1809b780d4eb1cd5b..6bdce148c0d5f3057e002f1ab94541215bb817b4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/20.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/20.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/20.exercises/solution.json"
index 6ef63ca6e548c11437b27818e1fb5d2ee601ba30..7089bc0b1a4b0582d651e0d25c15de092f3b1d3c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/20.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "aa3c40dc84814f449fdc18c66141d8a4",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/21.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/21.exercises/config.json"
index 50435ed161a8d5b017737aa3d4f7d53e995e7e35..455a6bb5c38d091c14ef107d88294ad5e5c04185 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/21.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/21.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/21.exercises/solution.json"
index ecea278caba6ba3f1b01285dd5ebc3464af5cade..06d4d517ee7e911b9bfa2fe137887a7a63e1ed94 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/21.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/21.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "huang811031",
   "source": "solution.md",
   "exercise_id": "0a8280c70cfd4d1da288432aa3ef5f8e",
-  "keywords": "散列表,散列表,算法中阶,数据结构"
+  "keywords": "散列表,散列表,算法中阶,数据结构",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/22.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/22.exercises/config.json"
index 91962a350943068471662702acbd8fbfca52c9ca..2730fc0e9829deee92b58b3190b4009109f96871 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/22.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/22.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/22.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/22.exercises/solution.json"
index dbe24b8ac78df430c79bf8a55e4e0923b0543267..feb8650337b2df1ea15837771cb3c736e5c9f390 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/22.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/22.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45813254",
   "source": "solution.md",
   "exercise_id": "3409457ad91d4b4e96d77dfef1cc52cc",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/23.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/23.exercises/config.json"
index 10967705c8394cf28354b574432d6c7d0db52e8e..01cef5911da1c1d19328d30793df678a0b8e8a2e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/23.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/23.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/23.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/23.exercises/solution.json"
index 47e2bb2dd1ee3c59b7293cbbc5ac480ae1da99da..7c5bee05db58411a8b4bcbd9e122bdaedcc09be6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/23.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/23.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "oHongSePuGongYing1",
   "source": "solution.md",
   "exercise_id": "5a97ea92895d4fdda13359eeae09f284",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/24.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/24.exercises/config.json"
index d35ba51bdfbcfb76c7c5d5fda46dadaaae7319ea..f60e1d272952a7af605706e56e9c25064ab2aa76 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/24.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/24.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/24.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/24.exercises/solution.json"
index 88ebf8c4342558ab946c9c8e5f280c3bf2c80c95..c69375f0a9a1f0b558d9316e91d1e3652d01a659 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/24.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/24.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "m0_45823404",
   "source": "solution.md",
   "exercise_id": "53be93ad31624900a621d8a1980e3d15",
-  "keywords": "猜大小"
+  "keywords": "猜大小",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/25.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/25.exercises/config.json"
index e4407175070db644b3387096e4710ed05d2c9050..c7c21f1ce0829b0661c144724d5f54b027e9796c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/25.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/25.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/25.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/25.exercises/solution.json"
index 985a45cde560e041dfd0f7f74eda89ae5c9c5305..11cdced8183121fa4239cfdabd92f05ad96c9c12 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/25.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/25.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "WO520AI",
   "source": "solution.md",
   "exercise_id": "380add44a3b646f9802a5e44575f5f9c",
-  "keywords": "散列表,算法中阶,数据结构,散列函数"
+  "keywords": "散列表,算法中阶,数据结构,散列函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/26.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/26.exercises/config.json"
index 6179b94a3c364d79545c90ef3a0676cba82e725e..bb39b651f79a7ce9b3370cdfdec93d380c0bf0a3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/26.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/26.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/26.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/26.exercises/solution.json"
index 1ad3687af599d08f5e0459c706b0e46d17eeabb6..02de9dc5dff705582c972d2779ee55f6b26c5735 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/26.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/26.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "guokenime",
   "source": "solution.md",
   "exercise_id": "f735d40d184d4dc0a216d0365dca8e0e",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/27.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/27.exercises/config.json"
index 641ce46f9aa9fa60538213bacbcf5b1d0e93dfaf..735c7886fbf290d642e4e4f5897ab01194ff5820 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/27.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/27.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/27.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/27.exercises/solution.json"
index b6a28e500ba759158fbc9204ff660633c06f587e..8eb6711dd1aff16d7637b45dd97935bb8d6cf134 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/27.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/27.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "asd807832658",
   "source": "solution.md",
   "exercise_id": "a364b4973bd2480ba3dce0cde34f92cf",
-  "keywords": "散列表,散列表,算法中阶,数据结构"
+  "keywords": "散列表,散列表,算法中阶,数据结构",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/28.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/28.exercises/config.json"
index b2177905b6c23d5cbed424612bb8c8f53718a18c..6d0fed9a7e23095dcea3844ea31c0dda2ed1af68 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/28.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/28.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/28.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/28.exercises/solution.json"
index 02ca4686ea0c67610a49709ca686cc31ced47222..fb84ed0bcb334b9ed7ba1e98f6cea83344439177 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/28.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/28.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Light_1009",
   "source": "solution.md",
   "exercise_id": "30270280c9354fe1b8a8eb60e6da45d0",
-  "keywords": "算法中阶,贪心算法,活动选择问题,高级设计和分析技术"
+  "keywords": "算法中阶,贪心算法,活动选择问题,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/29.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/29.exercises/config.json"
index d584dfa535d5ae2bbc96e1757be841362d5b9ba8..d49cfa1284b65b3e5d7dcf705d06f4d052b8b1ff 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/29.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/29.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/29.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/29.exercises/solution.json"
index a2a30eb4f64e8d9f5ee8fc29a33e3140070a6a20..96bac83e309de4709679c6241df013d2dbbff380 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/29.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/29.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "74c9a9ce0e374c2583088e960f41214d",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/3.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/3.exercises/config.json"
index 82f016c29f9a3e6f3fcc8f04f876881a26df7673..ca16d68efd1545f4b18d85c5ed22314f411b6a3f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/3.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/3.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/3.exercises/solution.json"
index 5231aa12ccbc03d4e4de2b739b94f0b438ffd409..b435776471bf0a5127effb627286c5f92bb35131 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/3.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "lihao1987425",
   "source": "solution.md",
   "exercise_id": "ceb695b85bf048399856af31d1c47871",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/30.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/30.exercises/config.json"
index 1772bad876be13e0261783d7d4ddf4177ca8bf93..af8550940306ed3f0102871739c5d85a0612be49 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/30.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/30.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/30.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/30.exercises/solution.json"
index 58c8077c6764787e7806dbd5f2829a2183b43515..ca83e85adb225336eb14a2e471a34f630348df2b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/30.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/30.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5bac8a7cc669449f8c4f98f86335f84e",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/31.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/31.exercises/config.json"
index b9c585cbd40ad916a127487968ca430547cdb65c..513090279a5e31f880f5f28a84efa46035b6bf4c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/31.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/31.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/31.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/31.exercises/solution.json"
index 6c4a13a70a03f133bba14e0646d70739c64eff32..b1384bd3029f387051978a31a3624fdc9ed8c34f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/31.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/31.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2a8059789b8a4bb6b8ddcff5c8a39778",
-  "keywords": "链表"
+  "keywords": "链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/32.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/32.exercises/config.json"
index a2259a5ca32316eabde73a672b416cc1e5063dfd..c0927bfb32c0f638f33b8823f99599275950b1d3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/32.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/32.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/32.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/32.exercises/solution.json"
index b6c7ed56edfb25e261b0c38b6064fe285b52ae58..c3103a372fc944ce0fd7111c6c721fb72d5513fd 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/32.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/32.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a29d470cdea24c7ab191ffe82e9aacf6",
-  "keywords": "æ•°å­¦"
+  "keywords": "æ•°å­¦",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/33.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/33.exercises/config.json"
index c1bf0db1c96d334734a912eecfde236dc37500c9..ca2f88d488e83645355a6cb7e34a9f92bacbf5a3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/33.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/33.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/33.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/33.exercises/solution.json"
index 3b75f88532c8aef1fc20eec2d6c3e50c9a6c1e41..7aa0ae47aacb2540f83e87ee11ecabadbf4c446a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/33.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/33.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "f63bd834c1f340dba184219bdb307d37",
-  "keywords": "树,深度优先搜索,广度优先搜索,二叉树"
+  "keywords": "树,深度优先搜索,广度优先搜索,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/34.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/34.exercises/config.json"
index 1372eb1aba8d9934d14af0fd80fb754cf8983df5..cbaea5d8088eb83357e0f27cf6ce747d8e6124d6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/34.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/34.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/34.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/34.exercises/solution.json"
index 5345bf90f4dbc9317e005c209d97f6df68e03ecf..fe2efe0564c3d190a44875cc99e2caa1fe14cf79 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/34.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/34.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "03338ca436f84699997212fdeadd9f63",
-  "keywords": "数组,哈希表"
+  "keywords": "数组,哈希表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/35.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/35.exercises/config.json"
index 675ddc4d5c7fca1747395aa9383f6737db2254f7..2b0b2628086d4fb9584d38eb4c1b3071b3dbd6b7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/35.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/35.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/35.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/35.exercises/solution.json"
index 554901ab2ad07daf49b463b99c37b825fe7aa757..09163037ec5957589c756cc96e8667b94afce354 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/35.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/35.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "af25ce9a4f4c425b8c900b3345aef661",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/36.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/36.exercises/config.json"
index 2db702f3a4bb13c556f021540d8a4d9ce89c4ba9..792544488aa0d80e285b395fbd6b202ce1d20455 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/36.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/36.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/36.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/36.exercises/solution.json"
index d68169d55b699ad880e1a2a69e18da599c5ae1ad..eaaf91d5557ac1266fbf1a9e48c4f416de9c6fcd 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/36.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/36.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b86b5967c10d40aa825dc4a9c1624d9c",
-  "keywords": "位运算,数学,字符串,模拟"
+  "keywords": "位运算,数学,字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/37.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/37.exercises/config.json"
index c8bca16394169c9ce3d6a3ff832d740de34a800c..6fe5d07f7c5f9c911f7c4fd7e590a0a88fe23c5f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/37.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/37.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/37.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/37.exercises/solution.json"
index 654a580301fbc5b9dd33dd93016ce17363c17e83..3d143d2bf8dc0a856b2ab227aed326218a52a4be 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/37.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/37.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1f488d8bd1d2415e8e24ede9f742f962",
-  "keywords": "栈,树,深度优先搜索,二叉树"
+  "keywords": "栈,树,深度优先搜索,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/38.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/38.exercises/config.json"
index 98b108ab1d256d0ca88fb6dcec8630b61c63c823..048b88ca93e9e32e571099407468f1b0e31f0c3e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/38.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/38.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/38.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/38.exercises/solution.json"
index 981b0c6e28c3954cc379595ba8b3d9027a351302..0d63f92902ea2b736b787910bd3a299293529e60 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/38.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/38.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "0a12ae6577704d18b37db6956fe16aa8",
-  "keywords": "记忆化搜索,数学,动态规划"
+  "keywords": "记忆化搜索,数学,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/39.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/39.exercises/config.json"
index a8a04b75e01de6c5edc647dd523b78b705f39b23..65e2f9547c729319f0fbd4a57720bc545abc912e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/39.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/39.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/39.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/39.exercises/solution.json"
index 9a2ac90a0b3ac4a93a64165f4d9bd4b8b2818fae..d4af5ea8ef811dfffa06ecce591006cdeb4efa4b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/39.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/39.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "810f4644697941d9894b88099b1bd39c",
-  "keywords": "哈希表,数学,字符串"
+  "keywords": "哈希表,数学,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/4.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/4.exercises/config.json"
index fa14e27b7d268a260dec34e15a71b90ab343b5dc..9866e0aafbe77e0857571e63308a4dd6c8e2484b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/4.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/4.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/4.exercises/solution.json"
index d5dbda70a19906038487b033b8ed12f9a8eb91a1..d48a3bbf70f629a7c36b0032d8530281e295310b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/4.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "kucodes",
   "source": "solution.md",
   "exercise_id": "05afe850f47545f0a825d1df5315fff5",
-  "keywords": "散列表,散列表,算法中阶,数据结构"
+  "keywords": "散列表,散列表,算法中阶,数据结构",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/40.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/40.exercises/config.json"
index 571d0ac4b258c3995aba71d727da875d8a0ae72e..0f2017498bbff9e0d22031552d15da8b055be7a8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/40.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/40.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/40.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/40.exercises/solution.json"
index 7f67bf3933e0f11adc69d708f35b6cf5fd1e7fe8..790b15d87b7c66e21dce52bb01892a10ec495012 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/40.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/40.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7ba27bc1a0b144f992860e885820382e",
-  "keywords": "数组,数学"
+  "keywords": "数组,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/41.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/41.exercises/config.json"
index 0115ccef038cf60698b304a4a15e49969ba000b4..f05a664973926b146f5d443b0db8c09f082c2f9d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/41.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/41.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/41.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/41.exercises/solution.json"
index 814e34f833cd588fb346b5633cfe5a2028c96d9b..e68c97a5d52a7ab07dcb99ad99839fc5f9049795 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/41.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/41.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "02dce007329c4e84a7762ff88219341f",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/42.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/42.exercises/config.json"
index 7f07b41c4043353d5bf8e618ae5758bfd04b68c5..d98accea4e4fe3acc1221e35765c1c1c27277b8e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/42.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/42.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/42.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/42.exercises/solution.json"
index 2deceed308e01c2186e40fd55f9da39e999dfa0e..5d45c44be29b06aaa97d7481b04cc091887ba301 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/42.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/42.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "96784621fdde4987acb6c7f1d43c37c5",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/43.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/43.exercises/config.json"
index 5cd2bd7ec8241b29b07d4a79afbcba80b0f47543..393a97dc69b014478fecb89a2ee2123f0b47ff11 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/43.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/43.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/43.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/43.exercises/solution.json"
index 75a4d53f104bf25af5f11c988a0b2b029d7d1c67..8fdc8a18bfb0b2d6245bb35a1583c35345f8ac49 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/43.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/43.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a0d58370128f47f09f23c7af3c83d23d",
-  "keywords": "数组,分治,动态规划"
+  "keywords": "数组,分治,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/44.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/44.exercises/config.json"
index dc692f352f4a63b34d05862f32143eeb1b11fabe..a27ea6d6eb6f0e56ec664fdb464f5b0a18ad5554 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/44.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/44.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/44.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/44.exercises/solution.json"
index 2d2f5bed7177b5047926a0a9b658b980e747b4c3..b25c0766322c082cbb20f7e2f109989415662751 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/44.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/44.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "30e3315d78704fd089eb9bccc0680b27",
-  "keywords": "数学,二分查找"
+  "keywords": "数学,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/45.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/45.exercises/config.json"
index 09b505ab536b724786ddc13f6ad12cfa7ad7f78e..1786b873859706c8034dbb3653c90f9d30695168 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/45.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/45.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/45.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/45.exercises/solution.json"
index 0bedd50641d325e41566f70f13738f2ead461782..e30d9493704b7248b8c2475ba307b375bd31f4ef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/45.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/45.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "6ac5ec62fe274644980c8fbc4bcb5612",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/46.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/46.exercises/config.json"
index 57902c38a49a27bad779a021883f24cf5ef2da01..c019f47b673d29655d5b837f614cdb8c16eb676f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/46.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/46.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/46.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/46.exercises/solution.json"
index b08681da655b62efce62e9c536fd076da2b0949c..8d42bab681e111ed46ae55d9bd3a9770437a1808 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/46.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/46.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "63f84e83edcc43819d0650cd2fc897d9",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/47.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/47.exercises/config.json"
index a3b2f64aeb12c339acd725413575f9a579a3f7c2..fe5e8f03f28c0e89117290fdd6bd308d036e65cc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/47.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/47.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/47.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/47.exercises/solution.json"
index 4eaca27548510b091a8e97acf3e51be49b2b0cac..5dc6474c3fb804b7e27df58807b090e8b1bbb916 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/47.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/47.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a6489253236344e493b4d6b1b00fc19d",
-  "keywords": "æ•°å­¦"
+  "keywords": "æ•°å­¦",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/48.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/48.exercises/config.json"
index 3cc5b306151056e2d34df1285bf66b1c41a166d9..27f832cea9610bffb320d9e62b5c273550efee6b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/48.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/48.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/48.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/48.exercises/solution.json"
index 69c0e1c3e7ce596a0f9d3998c58cd28c36a865c1..9d510eab9a4318481d631abd2e161ac68c1d05b7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/48.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/48.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b32f322d76c744d8b7b99c4c00710077",
-  "keywords": "栈,字符串"
+  "keywords": "栈,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/5.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/5.exercises/config.json"
index cb60218bb5296c15844601b0ec1bfeaaa8ec8d19..a0cb35af4fa5a8e8b2f124c45af2d50272c5494f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/5.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/5.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/5.exercises/solution.json"
index 7b5009a59bab88e0599ad9d66692913e16f0b8e1..e1b90b2bec0d8e9bd463ed324a032af43b81ee0b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/5.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qianjyjava",
   "source": "solution.md",
   "exercise_id": "5ff96998f4e641eaa92a22aff18f151d",
-  "keywords": "算法初阶,基础知识,分治策略,最大子数组问题"
+  "keywords": "算法初阶,基础知识,分治策略,最大子数组问题",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/6.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/6.exercises/config.json"
index 0ef78c5b43592ea48faca3158ded3f98b6313e60..e52769ae83cdfd78c290c662df563cc86b7a37f9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/6.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/6.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/6.exercises/solution.json"
index 9fea842d6ac80749cc6495e2609dbace44209a31..7bd4637926d041b44a2a1298811245bb49aee8d9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/6.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45554739",
   "source": "solution.md",
   "exercise_id": "0a3ddcde88eb4f6181853a678ebf45ea",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/7.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/7.exercises/config.json"
index 1392cb60775e17f5dc9486304cbd4c6e69d279fe..22dc46da1ae0dc003acfecdbf9493a115e5a53b3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/7.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/7.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/7.exercises/solution.json"
index 8341176ec422755d55e4b65066624db7377b6f46..825c2d4f3066d80765c1c6918646dc148bb1a5a9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/7.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "chenalens",
   "source": "solution.md",
   "exercise_id": "eb2de64e11fb45be92fbe9382ff09710",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/8.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/8.exercises/config.json"
index b877948d369a751540669536df0fef3874089bbb..14b638587ae0084b0b88c7c7261df02f27e084c4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/8.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/8.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/8.exercises/solution.json"
index 19665e90eac937eceb6656c6581482171945d4e6..e67becb49fe597691ed4d7d7db3d27b4bcd91047 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/8.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_27976405",
   "source": "solution.md",
   "exercise_id": "9bcfaba804d84dbf9ee53401b14c70fb",
-  "keywords": "算法初阶,基础知识,算法基础,设计算法,分析分治算法"
+  "keywords": "算法初阶,基础知识,算法基础,设计算法,分析分治算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/9.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/9.exercises/config.json"
index 7959443dd14f0bd541bc870666b6f849e9f1c115..1f3ed1641eed05dd7fc57fb65c67a8b2fdc4d307 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/9.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/9.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/9.exercises/solution.json"
index 8540f285476b5dc441ffe275d5a4aa3918c26aed..e4a9e3ae6f5f5ea4d31b18f70b8bd7088a81cde7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/9.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "651ea1f7b5d946e28d7a22d2b856fd26",
-  "keywords": "散列表,算法中阶,数据结构,散列函数"
+  "keywords": "散列表,算法中阶,数据结构,散列函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/3.python/config.json" "b/data/1.dailycode\345\210\235\351\230\266/3.python/config.json"
index 0a5dcc4b293107cb6e311708f0c23334d1871b83..75b518dd5474351fbec137c2be25f1306db17547 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/3.python/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/3.python/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-5219545f25234c5cad33fc2f95fd7880",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/1.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/1.exercises/config.json"
index 432c755e4443fb319d758bea30cd36e6ad3f5eb7..4af8dcb7058bbee656e1b3b1b6753b737f2f689f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/1.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/1.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/1.exercises/solution.json"
index c72492f2a248a4e38abde8801caa2571ca48b5ad..8916d1e248dffd70684e3efbd22519ceb95c45a4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/1.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/1.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "c823b1ea488847a4a1ec2b6060bba0d6",
   "keywords": "PC,老电脑",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120031215"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120031215",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/10.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/10.exercises/config.json"
index 9bd69772050923b40b3e07544dd7d79a1ce45dc3..f6543590caaa9e19284e6bc7ff683b463ceb4d8b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/10.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/10.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/10.exercises/solution.json"
index b57a71e79925e03d75c1bba55c1a5c569dd33a43..394bf5816f1f93cb527af88f65f1fd7eca34a79c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/10.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/10.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "c11359bc93be4a8f88e7441bea5a7edc",
   "keywords": "晶体管,半导体",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521028"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521028",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/100.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/100.exercises/config.json"
index 3a858e7e1c9c1bf6c5f4569ce9116d69c425dbfc..9c5708b4fb715d374aef8d0c2da45edb39f79e0a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/100.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/100.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/100.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/100.exercises/solution.json"
index 970e9ac931a461c72e94f1c6917303f992b7d566..e0c85958172be7eea6961d553eeaf297489dab27 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/100.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/100.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "2b1ce6d3e6d043f0806dd3540c70ceae",
   "keywords": "新闻,程序员",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121287366"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121287366",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/101.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/101.exercises/config.json"
index afa5e7f6051ebd4ef2809e845c169feaf8a51f1e..5399964161cec2385219a84049ab76a75fb834cc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/101.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/101.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/101.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/101.exercises/solution.json"
index 3075bea92f29e08b5c808057edb71509e8093d42..fbb5b8cc02a9464b464ffca9dca3a4eb44343990 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/101.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/101.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "80183aca1cd54b5d8a72e7093738a024",
   "keywords": "计算机,打字机,",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121386559"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121386559",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/102.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/102.exercises/config.json"
index a3208616179262e502d903c5d99308a021dc5885..e2ae96b66461f5aad5cfb2bb64b7141c5ef491d6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/102.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/102.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/102.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/102.exercises/solution.json"
index a37c951643688e3f299858bed05631911c5980a3..310506dffc60bdd97e22cf3f705e6786e777b5be 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/102.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/102.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "ac4baea4cab64a3d9ff185aa20c3afd3",
   "keywords": "硅谷,半导体,仙童",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521000"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521000",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/103.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/103.exercises/config.json"
index fe6b14d399b352e63a7c6cfb40baab0badce3070..647a979a22d55e329b19131395f1267925401a80 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/103.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/103.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/103.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/103.exercises/solution.json"
index 3080d086d908712e486147b35a148ebc5a51687d..77aaae4bdcb8d02fc61deb5cf0bb9eae99534f3e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/103.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/103.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "b76ae2cf7a4a439abb86d6394eaf93d6",
   "keywords": "3D打印,3D建模",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521028"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521028",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/104.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/104.exercises/config.json"
index f9cc1f5bc78d1f331bf147f9d233a88d9e93dfd4..4f75ed6cf23255b8ff97c30cf211a9442a57c270 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/104.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/104.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/104.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/104.exercises/solution.json"
index ab73c8da4f4bf5ce4231686de9bc7d7ce8aab748..9b75644f490984534fd6221f2311010a90b0cb64 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/104.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/104.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5373eabf44ae4641b28eec2ef8d46793",
   "keywords": "人工智能,开源",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121478956"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121478956",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/105.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/105.exercises/config.json"
index 7df764d1dfa055cd3fe275f0975d73fd954aeab6..59cc622969119ada5c82731e08eeb77ec8f03ace 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/105.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/105.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/105.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/105.exercises/solution.json"
index 7caa5c57e906a5936acc946fdd97bbe0fc728594..1f78d90a8d52f8035738889ec851d9aca5bb7745 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/105.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/105.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "ebb402606c1b4ac2842d9fdcc001391f",
   "keywords": "CPU,英特尔",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121431648"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121431648",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/106.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/106.exercises/config.json"
index c51d2a34ddc8e1c06787d6d3450ff7c6847c97b4..c1d5caa85586eeeeae71e105e803cb84b6ee494a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/106.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/106.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/106.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/106.exercises/solution.json"
index 049e7d857f7f520a966420b5fdb4e7cc2ea906f0..ac499cb6742b316800d32826dedd3735b1ba4edc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/106.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/106.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "b562add263b64837924d8be9b2f664d5",
   "keywords": "TCP/IP,NCP",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121446866"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121446866",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/107.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/107.exercises/config.json"
index d3e6fc8b40b10f04eea13cd7456ed82eb1fed749..abed29d3b6cf37754b8ea64214699df3fbdbed59 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/107.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/107.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/107.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/107.exercises/solution.json"
index 51373a65c49249deee18ce33a7d5bbb690bca399..6017c2417b4c7264c300dabd27b9c49b6f2c54f2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/107.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/107.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "df4415391af74e728d004ef42b3faeb8",
   "keywords": "HTML,W3C",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121503962"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121503962",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/108.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/108.exercises/config.json"
index 60abc228e3573b53c4e9ba9cbbaf0317bf8e0a54..5cfe7790572df0ce5089ae08eb3451b697c1f4f7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/108.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/108.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/108.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/108.exercises/solution.json"
index 3eba86b30e450855ee51b1b7ba6ae7469a4214e5..05b6e9a0fdc74fba4af4f62b27a79471b02e7a5e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/108.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/108.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "52ecd3261a05445fbff62b83081fe473",
   "keywords": "微软,网景",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121458983"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121458983",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/109.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/109.exercises/config.json"
index 9447eecaa9285e297684d057f9c2db969e514503..21ccda2b5aecc80b2eaa8ab550d80e33ce968b61 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/109.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/109.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/109.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/109.exercises/solution.json"
index 86e1a28f19fc931199e5870bc97a0aea70e624c6..9b97de2125648b8cc650bf566f322bc37981f05b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/109.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/109.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "bdd2c23fbca347e09fe396be2df30a45",
   "keywords": "编码理论,信息论",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121478956"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121478956",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/11.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/11.exercises/config.json"
index 407f505fc64e090d748db91ece32294f93f00e5b..5584618fc8bdfd3bd7d5ff17b249c6b830166ad4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/11.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/11.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/11.exercises/solution.json"
index e02a7e80493dd2d349833ae18d2afc8a5391ded8..5484a0763a5b0fb245966f738badb1aa64a644ee 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/11.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/11.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "0afe0fdc4a9445599ed83048be986c96",
   "keywords": "C,C++",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120756123"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120756123",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/110.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/110.exercises/config.json"
index 04c6b91d55623b5747972ecb28e7f511565aa2d7..90e48a6c4fe7e99ee5ad1cb2410fae10607e8f88 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/110.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/110.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/110.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/110.exercises/solution.json"
index a60faf84ff997d2beb716f28ff59fd3526788de6..02a2fca745a77ec66ab3a8ad80d3fdfae01f76f6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/110.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/110.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "23c7b3d9544945cf8c191d1d0330e135",
   "keywords": "乐视,云端",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121446866"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121446866",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/111.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/111.exercises/config.json"
index 32ebd839a267ae38477c0a28288a8e7b60aaa38f..42a9542217e6fc3f65c0b86a217009b1582972d9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/111.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/111.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/111.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/111.exercises/solution.json"
index 959fef5b05d6900003f3049e2fbbc1c7ed08fa8c..2e42ae2df04aaff2518504366009f014bd4ff78d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/111.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/111.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "d07a7b9987da4e4eb1288b95f432fd38",
   "keywords": "网景,微软",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121503962"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121503962",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/112.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/112.exercises/config.json"
index d97c96c2207db3036f1aa61e66e0e03ab1640c54..6711f37c263ae022e17156eeac1b34e161b30dad 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/112.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/112.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/112.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/112.exercises/solution.json"
index d9567001a4d01ca6526291a1c02dfbc7d6d905d4..a7e28fc3339e68a8337f8db9ccba62a805ec196a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/112.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/112.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "9184f3122eb74d54982231ddfef2ae76",
   "keywords": "人工智能,创业",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121431648"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121431648",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/113.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/113.exercises/config.json"
index d05141fc12ef4f32072b0d7267c3e1686ac5f270..4cc8c527b7241b4be439e08ecb14c1576bf06dfe 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/113.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/113.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/113.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/113.exercises/solution.json"
index 599ce35e081162e5cefeba50233e8a87876b107e..19b750a6fff0c825d1465db86dbdaa0b75bba683 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/113.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/113.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "1edfbf02d5fc4ee1ba7c3b98f0d8e665",
   "keywords": "图灵奖,编译原理,计算机理论",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121458983"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121458983",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/114.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/114.exercises/config.json"
index 0674830c44e778f042f373831d8384c6fbe1fd82..9a0045ece7c296ea64f1533834005bc1144b3ccc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/114.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/114.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/114.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/114.exercises/solution.json"
index 2ef942380a26f8db23a09f2cbea566046c515149..a13b9379e32147b0b6ce2687189c69831ac39ed3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/114.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/114.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "2a2a5220922f40d4a0d8bdf3c1098935",
   "keywords": "微软,Windows",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121616469"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121616469",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/115.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/115.exercises/config.json"
index 4bcb153439a8fbf8fffdfeb728b2afefe87430e3..35fab150d4d8f27814405e2c9abb780b5a61b9bc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/115.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/115.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/115.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/115.exercises/solution.json"
index fbdb990801689a5206ea7485db93f32c890cb745..8e420a6d9514435457018f662adcdefcd094fb29 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/115.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/115.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "22770e8ebb6a40cea4551065dd99e063",
   "keywords": "P2P,在线音乐",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121524974"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121524974",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/116.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/116.exercises/config.json"
index 5550851f4cf9109fdadf643004fede55e55a9b39..8e3bdbabbe3db4519fc0af4f229be65526b9cc49 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/116.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/116.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/116.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/116.exercises/solution.json"
index 3201577f1af49a3aa237d5feb7d0f692dc5905e8..78d7ada4459230e6608cc2f3346aba2b59014e4f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/116.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/116.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5c207a5e4e8c4204beb09708408344cb",
   "keywords": "真空管,计算机",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121595500"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121595500",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/117.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/117.exercises/config.json"
index c21280408477d8e37aa01c50cb7ac5a9352d99cf..7f7bcb2d2d54c0a5b97e47a44db62b5bb3d755c4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/117.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/117.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/117.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/117.exercises/solution.json"
index fb90af73cb9a9a7d9aa0837868c8a881845955f2..2721529b59f113fdd185122da63ee39537f048a9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/117.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/117.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "26b15ca265fe4c89be974fd038dc6da5",
   "keywords": "微软,比尔·盖茨",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121548163"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121548163",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/118.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/118.exercises/config.json"
index ddbd61a88d2caee22b441dacc0a2a6c0528105e0..b3a1c086aa8e21dc6ded0ab270a0c4c3a952ee7b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/118.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/118.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/118.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/118.exercises/solution.json"
index 529c13dd36ff7264118293812145b2ab4dc2aa6f..647fb5c66d8e5ab6b505d2d3e455121045a3eb45 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/118.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/118.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "69abeb6d2c154fd39e93d22fa4321c1c",
   "keywords": "智能手机,武汉大学",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121595500"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121595500",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/119.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/119.exercises/config.json"
index 16722798df5a87bd707e996fa8a1172590fb7a02..1268270537caba9a45056d54f5a49b60329f068e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/119.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/119.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/119.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/119.exercises/solution.json"
index 02823008b8dbbc11bba32a634bdfee76e56224bd..f03d86b575d82bbd3b33a870b33cdcd316694d6d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/119.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/119.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "cdf314c7459a48069c2fa5731c8ae77d",
   "keywords": "电子游戏,仙童半导体",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121639664"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121639664",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/12.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/12.exercises/config.json"
index 6f3ee736ecac7d23736d578db4a46c3dc8a3dc3b..cbea6b0a157726177a4ef2a8947d44b1f6f08956 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/12.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/12.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/12.exercises/solution.json"
index 05db773072a2788944e7159cd77205e45a78868d..e0e21c42fb9c398c082f9349a75ab1c2579660be 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/12.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/12.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5b0b5de535f64169924d1fd5cdaa80cf",
   "keywords": "苹果,ipod",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120912959"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120912959",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/120.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/120.exercises/config.json"
index 8a569d1a73be4446410fd869e0fc5e167a7c7945..78f89623077214c5cff4e4085d928e3eb17b6f66 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/120.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/120.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/120.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/120.exercises/solution.json"
index 026b3a5be225ba810db08d02fd973975d94b5e2c..749d7f0a5c1b976796b52416f5586c81a625af26 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/120.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/120.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "07f0ab9e5523462f82d126a04773733f",
   "keywords": "编程语言,APL",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121567786"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121567786",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/121.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/121.exercises/config.json"
index 5a80f874aaceb27fe77bbb6ddd32639b656695a9..880de3161f7eda11a7b2a8647be0e63383af3116 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/121.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/121.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/121.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/121.exercises/solution.json"
index 1e9dc29314bdb03361e74bd2ce0b71368adc5989..085f29edf03b3fcb5c701dbb756f0a2763f2bd47 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/121.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/121.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "3e1072b867694423b06ad84ec1a735e2",
   "keywords": "互联网,域名",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121585454"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121585454",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/122.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/122.exercises/config.json"
index 43700f224f5d23418c52467edc4ce9bac06d0c84..88f6f435d9492a0656a791323fb8626d62454320 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/122.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/122.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/122.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/122.exercises/solution.json"
index 2fd3fd0f62a773e71bc481a1cbebb6352b37b6d0..c18254f98eec8eea7856d089bff967c8f49e846c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/122.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/122.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "1590177af9f34323b062ad9e3db1dd23",
   "keywords": "移动通信,网络服务",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121548163"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121548163",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/123.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/123.exercises/config.json"
index 58a49d07cb1041bdafa3e8fb4e92f56ff1ef70c0..a40b5fe3197c55fc1e499da7658666b9812f7a10 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/123.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/123.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/123.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/123.exercises/solution.json"
index c3d7f1fc126fc0b15094520b4ee3eb643b0ddf50..2463c054677a8287e70cc3b6dd04a09784c905f5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/123.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/123.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "d70bca6a537946f5948352803b5f6020",
   "keywords": "电子游戏,街机游戏",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121595500"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121595500",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/124.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/124.exercises/config.json"
index f67096c327af5056727b7d040556a48b105b1881..ebb7d8600c4ebbad4cf44e1cb0979144686dce93 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/124.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/124.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/124.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/124.exercises/solution.json"
index 3721a1791de0fb64316a86057958055fabf2f057..a27389ba6692a04bd1a93d4fbcff07b04f9d702e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/124.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/124.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "c01b42748de84583b878c33c43d8ab29",
   "keywords": "古登堡计划,网络共享",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121639664"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121639664",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/125.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/125.exercises/config.json"
index 0134a7c3dc62bd5c6078df812fd36eddebd7d92e..5baff9ecdeb1df3e4f1f99c3b00fe1460d07058b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/125.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/125.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/125.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/125.exercises/solution.json"
index 08a42671ea6884b348e9b194d4aa7506bfb3904c..7fbc65714d893cdab7bc0d4c9cef9d056044bd5e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/125.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/125.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "b7de3134f7d94d549acca7151bc3267a",
   "keywords": "新浪,程序人生",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121639664"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121639664",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/126.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/126.exercises/config.json"
index 2039b25970a1979a9cf642893f937081d0639b6e..74b58db1c5d5480d4e190b6c0f4258906b9adfd5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/126.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/126.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/126.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/126.exercises/solution.json"
index 27cfb6e3c952e5bbb2d96625960a64b0259dbcf3..5e2c3da90f325d231246431dce4a3780d6e7fcbc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/126.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/126.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "9ea3ad71ba054055b4e5d2e2c52da77c",
   "keywords": "个人主页,手机之家",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121524974"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121524974",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/127.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/127.exercises/config.json"
index 4df019e8e85dfce3595b543350325e85da6e6ce8..c36d1486c6922399cf87962ce12dee5b29d8a5af 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/127.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/127.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/127.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/127.exercises/solution.json"
index 3d1d3a5eac67cae75bb3171dce940571c02818ce..efa87c8c52ba51d43e83e028c80bf87fb418a127 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/127.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/127.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "08ca5a29432f4f42b08493ead9eb5293",
   "keywords": "程序员,分析机",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121567786"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121567786",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/128.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/128.exercises/config.json"
index 7154e5c3847ca5bf334f851c989bf7fead725768..4596ff89894f874cf93a6256ac297b688f44887a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/128.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/128.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/128.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/128.exercises/solution.json"
index 3ddae2a82b068d606b6cd3c640986aee7dbb5fc3..333c1b1ce7099fbb350d6c77da0d8ce7112cae46 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/128.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/128.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "963b5d74dc33416b92989c90357b0776",
   "keywords": "自动驾驶,人工智能",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121616469"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121616469",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/13.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/13.exercises/config.json"
index bde984f56c809a1f0c4618a3316aa6e9d80f602b..115e122640656f31b65c6f67bf9317d19be5e830 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/13.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/13.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/13.exercises/solution.json"
index 8b61f0e79c5258b12d1989936069564d9ca4de2b..98a426ff0d5e4d2ac499035ab07bf989ec052908 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/13.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/13.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "9964a5a0795a486f9fa170c0151029b7",
   "keywords": "Linux,RHEL",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121003565"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121003565",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/14.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/14.exercises/config.json"
index 69063034f2e468d47b174f2639b83df5a32111a8..97b409c0b7b6b303e30cebec0a0850b924fbde1e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/14.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/14.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/14.exercises/solution.json"
index b93c505c0a251f350ed766139a06fd28fb51ca1e..07c0117ff39166daa59f7d3ab530aaff7c921999 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/14.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/14.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "696bb6cfcc6d484f8aae22dec6a6f5de",
   "keywords": "网络空间,互联网生态",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521028"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521028",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/15.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/15.exercises/config.json"
index 8fd9eddfce40143dc2f08f829ea2e1d0f1b7ba78..37542611a759d1e4352e92e534ad5e2617ff327a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/15.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/15.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/15.exercises/solution.json"
index 790c4eaeeab6cfc2f82df381491d5e10e710979b..9d4fb5d578db1d68b5a70aa580e5763cb0b5b68d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/15.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/15.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "9e75b8b52e8343d1873dcbb0734e0377",
   "keywords": "网吧",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120031215"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120031215",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/16.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/16.exercises/config.json"
index b973f36e1855c2e78c4df726feb7edd4470dba9f..aec473b0dc6cb444b3178664fe5e4b3944a81f4e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/16.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/16.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/16.exercises/solution.json"
index 202fdbe68c23808c5e6c9f5689d5c63b00e88d6c..d806720dabed6b08fdee54c5b418b0d00d36547b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/16.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/16.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "d44976dbd1044b3fa982e89d116b659b",
   "keywords": "Twitter,微博",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121187528"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121187528",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/17.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/17.exercises/config.json"
index f90f68ed12536a5ac57ea6d4749228d32d0184b4..6b9a14a3c5addb61c34eb3da06c52f9de344955b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/17.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/17.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/17.exercises/solution.json"
index 22bdef40e938bc45d42c726a7c8f1c809029c953..4b19ca6df14e6403cbf2ecfc8cf9abcf540d7ff2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/17.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/17.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "8e2aa99395064399921bc236c0c8e994",
   "keywords": "Twitter,社交网络",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121409512"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121409512",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/18.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/18.exercises/config.json"
index a8ec7eaeccdeb27439122a53f62b5d836ba7cb9a..a4a41a762fcf475c41caa5cec29d99c77e9cfbab 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/18.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/18.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/18.exercises/solution.json"
index 75344bc82eaf05b65ebf16f5b14d6d791cabb6e0..5b544c336ea6a53c9ab768ca39c913dbbf3745ce 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/18.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/18.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "36c2b78adf7943f3b4486722cdb5b4e6",
   "keywords": "密码学,网络安全,图灵奖",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521025"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521025",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/19.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/19.exercises/config.json"
index 3c9bf7a7497b39f0237282fcaac43160f075be93..a539d33b79ed8259863a787ee14b3ae6fe6922b0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/19.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/19.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/19.exercises/solution.json"
index 7ca91ac90eaa0d0a39c23b4707f8047ba1528d02..101e1098cdbced07fcdab8b25839aa4cfff74ece 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/19.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/19.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "14de4bf96851420180df87ecce3240e9",
   "keywords": "NP问题,计算机",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121090690"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121090690",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/2.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/2.exercises/config.json"
index bc48834013d0d08f3cc42eba6971eae165097de4..ee1fcfe127d6d379b7f7d691352d042e215dd58f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/2.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/2.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/2.exercises/solution.json"
index 69136fb1c9f430fc45bf7b0eef2aed1387f6d5d0..9edebbf996c64b3080f2978f6f7f8a851a5a3f0c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/2.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/2.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "85e8dc573aad46d8a0cd2c7bb3b852ec",
   "keywords": "Markdown,RSS",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121196929"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121196929",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/20.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/20.exercises/config.json"
index 98d12d1f74690779b97bfe83db4057caffb6e171..eb5753da4a40d7e4d6642b78c5eec4afd4c071de 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/20.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/20.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/20.exercises/solution.json"
index 9966e18aae19185371c1d72dd9309f656a84e37d..9dff7a8d9dfc8e72f77e19e859310c2991199713 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/20.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/20.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "0859ed3e7d59492b94e55982810a3b0f",
   "keywords": "Microsoft,浏览器,IE",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120815589"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120815589",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/21.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/21.exercises/config.json"
index 57b38b12432fea3eedfb275f6f83eeae336988d9..1f085bbbdc754430910489898f5505142526fc49 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/21.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/21.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/21.exercises/solution.json"
index c6c9e1f33851d1091969fe48ac35ee5ebb68c2ba..17fc133488cc269e814dff8beeac8368b3fd97e1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/21.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/21.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "4875eaae155d426da83fae6b5f0c62bf",
   "keywords": "微软,Windows",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120896267"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120896267",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/22.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/22.exercises/config.json"
index f447a5ec264149ade9250937e8d70608361d739d..902587da1f504dade3b6cf103c024405c09ec71e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/22.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/22.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/22.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/22.exercises/solution.json"
index 862380afedf20a3d8ea34c8ce8af9182241ded69..d2946f6de9f52313545bb5798b76441fea43621f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/22.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/22.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "038ea79da46341f1a3389642546812f4",
   "keywords": "乔布斯,苹果,NeXT",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120715397"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120715397",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/23.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/23.exercises/config.json"
index d620869edbf006718111b06a7fe9baaefc84c661..f7d653f33e04b0e6faa0f0326112903bcdc92d46 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/23.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/23.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/23.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/23.exercises/solution.json"
index 2f553eb272e39ec885b4529f28dea5736080ad78..f916b44be2e2bdb6ad378a4d296e87e5c82ea3c2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/23.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/23.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "0da89a21672a49f2ab070c5b4dc737d1",
   "keywords": "LeNet,杨立昆",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121196929"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121196929",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/24.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/24.exercises/config.json"
index 07bd4ec0785d0f6b75a939b8cd56c2f8a1ddce09..a4502344ea915b9100215b1e2b4df3ac1fd4f514 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/24.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/24.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/24.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/24.exercises/solution.json"
index b6aff722a8e444aab166129884698714bd47594b..07d18d950daafd3e5c1438b78ae0637f7f1311ef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/24.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/24.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "50f88dae8813427bba15bb16f8f54d22",
   "keywords": "编程语言,Fortran",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120757806"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120757806",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/25.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/25.exercises/config.json"
index 017c361a68971d6ef4f52676f43f65221fa64960..f1430ebfb70fbafa85e99f12fe0c31bf0e8d96d5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/25.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/25.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/25.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/25.exercises/solution.json"
index 4083ef506b83da7ebd989bb35c7421dd61d86be5..2ffa09c938e3f44d26fa0fa2497af571a79513be 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/25.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/25.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "7c93e59e7cce41b48ee72cb3f937c5c1",
   "keywords": "Google,Android",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121153445"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121153445",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/26.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/26.exercises/config.json"
index c8a5d2277706900956923c8c85fe85f8bdae37cb..e9fc347ab6570ed5dd24f48a5b9d54c7239d274e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/26.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/26.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/26.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/26.exercises/solution.json"
index 286057c8e835940dc37f5e6bad0d8e1e70642996..b77a53baa5693e4aac83f7666a79e115c985ce59 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/26.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/26.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "27a0bd060ef740d0b9c2a65f2c630aad",
   "keywords": "图灵奖,姚期智",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121058239"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121058239",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/27.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/27.exercises/config.json"
index 6cd7b1e68b2a9f18cd0ce38986e042dfe3c2b855..60c98d06fd834c230a0c262d9bd1eb79c35e8996 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/27.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/27.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/27.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/27.exercises/solution.json"
index b5765ac6956dbfd7a35d071fc52a28798ddb9d28..22b42f9cf2621c2f15356f69274e37275deb0427 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/27.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/27.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "c1390502fde448c19caa9984714b324b",
   "keywords": "人工智能,LISP",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120094247"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120094247",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/28.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/28.exercises/config.json"
index 653bdebf38cd5455ecbe08a18431a175f2f5293f..aa402bd422ff488c1f6542988ab129650860ac1d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/28.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/28.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/28.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/28.exercises/solution.json"
index 5f76957099e945d98e76674f7e5dd33fd742d54a..984a25552ebeab6eec3953e493a1d2e8059d434a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/28.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/28.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "43cfb1f508214c4b995ef511818f64dc",
   "keywords": "浏览器,互联网",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121287366"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121287366",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/29.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/29.exercises/config.json"
index 3bd132602a34a047bcbcaea9238cf7f34c79762d..4cdea04685430e32effa5f18ff87f9d8083739ee 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/29.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/29.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/29.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/29.exercises/solution.json"
index c66352515b72a0321548b8e9bf7c5dba773e91c3..381027a745cea8dd0f766c0b32611c792e2081d4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/29.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/29.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "3be0dfc2b9ea4958bedccd2e799c8137",
   "keywords": "HTML,H5",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121003565"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121003565",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/3.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/3.exercises/config.json"
index 84b0da413fd89e4464f000217c36c999b6d45d72..084bc2228147a6d2260ad9c1679f81a2dbe996dc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/3.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/3.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/3.exercises/solution.json"
index e6a893b8c5878403db2159ee5022a2a5f531f21f..24bf953c2b2acabba2352139bc29b2f7bf1b9bc9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/3.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/3.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "dceb1e8e031a4356a53f7940619e3830",
   "keywords": "微软,比尔·盖茨",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121386559"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121386559",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/30.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/30.exercises/config.json"
index 7e565e63c41af920b5c09d5f80bfb41858bfe72c..14ec39e4fa789586c17653c0a8da20346990e4cd 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/30.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/30.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/30.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/30.exercises/solution.json"
index b81948ff58b577a10a1fbacb4c97bd8954803a2a..5179fc48b0439bca74767078439f3a7ca1212244 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/30.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/30.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "cd41545d986a4bcaad20b8d617411057",
   "keywords": "Golang,Google",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121240560"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121240560",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/31.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/31.exercises/config.json"
index 5abf6b797ed8b2a533823ae3faca80f388ad069c..5e177af5ef65d8a35673dd7e244df64c48daaa02 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/31.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/31.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/31.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/31.exercises/solution.json"
index 4700d48176b183abbcbbd7de03e23a0a63738501..69e4fa247f44fb44623bfceb35991a83c0f46599 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/31.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/31.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "10df1013a90f4381943d66f7c025da15",
   "keywords": "图灵奖,计算机",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121187528"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121187528",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/32.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/32.exercises/config.json"
index 77f32b1f7cf415eb75d811a304bcf21e13b8a97c..e3ebfd23358ea48eec9c1404c4c74406780a3936 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/32.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/32.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/32.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/32.exercises/solution.json"
index 25590dde735939c0f83af94981b02f4f740483fd..532ab33cc7eed72a95127e9e43e1dd9cc9f462d0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/32.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/32.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "409cd315027f4e63887d757ed923ef1d",
   "keywords": "视频网站,社交网站",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/33.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/33.exercises/config.json"
index 067f5fe173c1c9531a8e050089c272072fc060ec..4d3bb108662b40bd94089d9a565b06b3b11fafaf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/33.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/33.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/33.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/33.exercises/solution.json"
index e26062912fa88148f801e54e0a862d3a470e9ea8..78be65d9515b31a931eab73bee666512e80f1f5c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/33.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/33.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "cdd76779bac54a06b0de021dc4f83f85",
   "keywords": "Google,Javascript,Dart",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120682111"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120682111",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/34.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/34.exercises/config.json"
index 2a8ebc94190a9f75ec7d6d4743bbc8c1d17d3be2..3d74660847b78c1d489c472d83638a0566c2c603 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/34.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/34.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/34.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/34.exercises/solution.json"
index 6d23c97d41c4bab25614f72f66d8a0a0017a43b0..ff2250eaf8a3a2118466dc85c809e7200a0cc080 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/34.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/34.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "e1cc9985b6904c7093607a28a41a51f1",
   "keywords": "搜索引擎",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120828788"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120828788",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/35.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/35.exercises/config.json"
index d96fa46ba5cd89f985787b723b2e160ab1d740a9..23ce015eebe407293dc7ec9b9e7b7e6283c048b6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/35.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/35.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/35.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/35.exercises/solution.json"
index b1284b71bda8034aabb8b9373510557810563d23..26e707c408472f45ae75261ca137a779546ae695 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/35.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/35.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "02920e5a3618415f84ef698e38eeee20",
   "keywords": "Unix,NetBSD",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120962054"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120962054",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/36.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/36.exercises/config.json"
index 30b25c49d9e3b9c183bc934a6710774415007146..19359a0022650a3029a8a2c368d6c95c758b1ebb 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/36.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/36.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/36.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/36.exercises/solution.json"
index 74cd44d988c4504bba6c5cb749712639a5adbe3e..96e6166afbe6b0f8049a260bc8754215272541ca 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/36.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/36.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "ab0a9fbf9b624951a9fa8cfd7fd8abc1",
   "keywords": "Perl,网络编程",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120804305"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120804305",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/37.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/37.exercises/config.json"
index 98ba8f0eecd6415320a419aa22dca0ba9faf07c5..0068e41040d7e501bc715f1b70ad3f8ea5454943 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/37.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/37.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/37.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/37.exercises/solution.json"
index 9d332f28ae0b64626c1096419308389bbbf944bb..58693a107ff3d388699810118cfa7770cc4b8c84 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/37.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/37.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "ff6b2209183446bda9a4ef86e7589684",
   "keywords": "病毒,蠕虫",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121090690"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121090690",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/38.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/38.exercises/config.json"
index 37c3bc3a00160a3b72c3a0a22e46862545e5dce8..e1654cbcfed11cd1ac6393b0ab4de8dc214633a6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/38.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/38.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/38.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/38.exercises/solution.json"
index 6639c4cc8a7faab9c869db4ce27f9a1bad5ea6b5..b7c1ce1f183c000bc878ef299bf9b14b1aa88d05 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/38.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/38.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5e7253f45fe448b5be33532a6918e68e",
   "keywords": "电子游戏,微软,Xbox",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121325474"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121325474",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/39.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/39.exercises/config.json"
index 07dc7132fc7cb1b3dfe0027a39a829a5fe170e9a..8fb8fa69989b758fc991ba96c1980682277572ae 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/39.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/39.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/39.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/39.exercises/solution.json"
index 44a6b2341435a8c5b8d5449cd7c3783168377fd5..220bf59e5912bd7ab33c44b8002e862a7b338cde 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/39.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/39.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "1886700188b443d382178a2d4208773a",
   "keywords": "密码学,程序员",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121259792"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121259792",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/4.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/4.exercises/config.json"
index b4576f10968f46494fe021f92acb6438d9418105..b28f2d696de6a4315ae3f4f89709887709b19c37 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/4.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/4.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/4.exercises/solution.json"
index c91151c1026b7dcaaac4896eb9973a99af09ade9..4954f5cd5e5d90f7eeacc49c35a699954ef1bc58 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/4.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/4.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "410d190f565644d1a3afb181801a57c5",
   "keywords": "C,C++,Java",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521025"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521025",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/40.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/40.exercises/config.json"
index b0aa30c74d54947cc92eb07a2346fabe62b90e42..0cd60aaee1a6be6b5336cf5d2ab3662beb1a7ab4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/40.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/40.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/40.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/40.exercises/solution.json"
index 82bd2c1089cd7e67aa5be9f905ef337da316ba18..8b867a92ca3d3c39d56f7a76fb2515497dd2cf7d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/40.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/40.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "93704efe09e54517a9366979633389d7",
   "keywords": "Fedora,Linux",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121172168"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121172168",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/41.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/41.exercises/config.json"
index 78eb23a03890a9ec2d5811667f865357528fac5c..ce9652e3115f8827b5f33f4a977ae5fb3277dc2b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/41.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/41.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/41.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/41.exercises/solution.json"
index 81487b30edafad0a21ffeaa97fce889975b05859..0323cb83934571463654d8a9a6fe37b609ba0666 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/41.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/41.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "16e1252ae211435699b721a0b27f5f64",
   "keywords": "算法,数据结构,程序",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120031215"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120031215",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/42.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/42.exercises/config.json"
index cf379a2b099e3da899739bbea91ec7e02781bc63..7a30864fa7fb83976a974985141e966f71599a78 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/42.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/42.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/42.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/42.exercises/solution.json"
index 1240432d9ad47198966a5745b30af2520c656b7e..b6c97a71a39651cedb5e6ed3bc6d4d1dcff109b3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/42.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/42.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "65e404bc68ce4e31b38dc0f66881631e",
   "keywords": "搜索引擎,百度",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120695661"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120695661",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/43.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/43.exercises/config.json"
index e02e3bf19c67bc70fb1dd02d84a2f71c68f2c960..876453d78a25ef669b38ac39bb0f9d9c8fa9b604 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/43.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/43.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/43.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/43.exercises/solution.json"
index 6094e164bbee0b7b0dae39f1b78fc3c6ab4c68c5..75df65b2a419532de7eda105bf2c1e3d9455b045 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/43.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/43.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "7c1fb6870ef849a1a6924ef71f396a39",
   "keywords": "Linux,Ubuntu",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120856601"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120856601",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/44.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/44.exercises/config.json"
index b17c9feb44fdff0d78776a3ca095d73470aff15e..c621da1b2bdf5e540ac8698e07c9a07928ea254b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/44.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/44.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/44.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/44.exercises/solution.json"
index 115a80f061f7791536b8d66123fb46190692b1e6..29a52d186a5ae02f9403afbfb63f4524b88c1af4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/44.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/44.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "1c6f03419e544908b3cc94bc9f5b6a1a",
   "keywords": "编程语言,ALGOL,BNF 范式",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120940621"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120940621",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/45.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/45.exercises/config.json"
index 5c236aaf35f9d09572b4fcfe57c1fe19dc8128b7..d3563e9bb053d70a35c18f9dee2de6d87c8c1620 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/45.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/45.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/45.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/45.exercises/solution.json"
index 61f8ac6db5f4ad3acc332d826a539c87a0c2c46f..d47dff0a44d51b5a76fe584607af4538605a6a7d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/45.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/45.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "f8e099fef82f4113b72836aece50b568",
   "keywords": "Microsoft,Windows",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120804305"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120804305",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/46.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/46.exercises/config.json"
index 48b61c4a2130c8c2884e68ec4cbf04ceebb87a29..ceb6a45016bfa3e990f2aa4814b934797bf92731 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/46.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/46.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/46.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/46.exercises/solution.json"
index d580ba2e65dee890af19bee7538e3d2af6365c52..822592d8208969b4deab4b67475838e7ca28eaac 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/46.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/46.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "b5a86dbdeda04120943be44e94e1bb5a",
   "keywords": "比特币,P2P",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121070968"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121070968",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/47.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/47.exercises/config.json"
index 59b6b98c62e7f9481bfe6b402f2ade3505e744a4..80566171761cc99bc2d83484756e0dd49398ce66 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/47.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/47.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/47.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/47.exercises/solution.json"
index 589eb4aa883a8c25866e310210295006f6ec86d2..acdc77fc17f77bf7c6d44b18541b13550c3669da 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/47.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/47.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "e61df619aca34e2b99a470250c7c1b9c",
   "keywords": "CPL,语言设计",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121335096"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121335096",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/48.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/48.exercises/config.json"
index 2700874d7b4219b4145eb3c57098b5802a9c9be4..2224565761c33c3e9e505da810d93f409e301fcf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/48.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/48.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/48.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/48.exercises/solution.json"
index 9c0f45d98ffca71436d087a1be4900880de3f580..ea366b3a82237210dbc9e3b43d8fffa8f04da1c0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/48.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/48.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "82ebdc3b8a2c44209d05eadc844a01c4",
   "keywords": "英特尔,CPU",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120896267"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120896267",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/49.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/49.exercises/config.json"
index 3bf8b72ef2aec9bbadca40d31153e2a649c3fa11..68d55220f553bdda51fbbf831157e15e5872bdf0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/49.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/49.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/49.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/49.exercises/solution.json"
index c1a3460e544a878f513db96220fb719db55aa9e2..098064975c72fe43a7e5e6ad1b91de67060b563f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/49.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/49.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "72868e61542947f38bdfce33823e0a32",
   "keywords": "超级计算机,ENIAC",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120735888"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120735888",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/5.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/5.exercises/config.json"
index 86c76053637231fc98004dc96604c8b41961f5c0..77d5961e073cd167c29b20ee46709b6e76de294a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/5.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/5.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/5.exercises/solution.json"
index 066ca1bff95098ba79ed3ec837247007998f3d4f..1973c32384ff9251237bb129922d69a1fd88d943 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/5.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/5.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "134d8827bbc74a18af65ec5a9bd8f9f5",
   "keywords": "电子游戏,steam",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121110776"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121110776",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/50.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/50.exercises/config.json"
index e48d64cce3c7480b118011187d5ea5a2661b0df4..f0e73ddfd6c3e6e5c15a6828e6df5be0736075a1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/50.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/50.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/50.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/50.exercises/solution.json"
index c92b3f47b920ade7e7a1fa9f0765bc6c00d3ebe2..d253096021010a8629da46b58a9e6d8c1747fd42 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/50.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/50.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "1a23639f365544c0b6126117a3eddf45",
   "keywords": "微软,Intel",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121213157"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121213157",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/51.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/51.exercises/config.json"
index ceaaff94d011f39af5acd1eb64dcc16639508982..a7588938b2cb2853b2143432932c27114bc7d1d5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/51.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/51.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/51.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/51.exercises/solution.json"
index ca6890f6acc45753c5dd4995e07565ad27f97610..2ff82baedd0de2916f292d60d894842b0b6aa1a7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/51.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/51.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "54bd30a003c7460e93aa7ebd06c9f56c",
   "keywords": "网络传输,网络工具,网络优化",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/52.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/52.exercises/config.json"
index f3db87bf3133c4694ab144d99d89647cbd012cda..7eec993b47e370af06ca59a3d8589498545f1e6b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/52.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/52.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/52.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/52.exercises/solution.json"
index 1779f38ccb527ac9793e95386571482082f45a06..9cf1245c911d2363e2e2a4111d70ddbfbdb8c539 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/52.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/52.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "07554c8c75564e19b5cf6fa0f855070e",
   "keywords": "Google,智能家居",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121131852"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121131852",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/53.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/53.exercises/config.json"
index 4a057b6444bb15262cb6c7843a826f297320793f..ba97d76bd46aea408dc50b043a179d4e893c2a10 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/53.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/53.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/53.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/53.exercises/solution.json"
index 4b53997e0631248d73bee5c16923548af58713c8..46f5dc83050cdd900c7abbd18d4e40f9dd947b18 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/53.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/53.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "e185da4c18354cde89c8fb696083f854",
   "keywords": "电子游戏",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121044111"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121044111",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/54.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/54.exercises/config.json"
index 4c2e58d9b47a3ee83780859102121650ae51c63d..a1573d88313515b88389f407ed1f9634aa19278e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/54.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/54.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/54.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/54.exercises/solution.json"
index 50727e2a8996e66b974bdf4e14a525ff70c910d7..c49f0dc90ed1dc97ce078cc2795eb9fdad28a506 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/54.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/54.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "e5192e63e55241a1b4ace82aa31176eb",
   "keywords": "Paypal,移动支付",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/55.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/55.exercises/config.json"
index 51faeb20e6db21ac7b45570ffa91066b3728478e..0c21ce57f5cf525a927a92d3e3f8ce1961c75b4c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/55.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/55.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/55.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/55.exercises/solution.json"
index 0616ad5477df392369fae6c89a9ffeca1b5cec9d..b00bffeeb4d99a93162b30c4b026841c905c5132 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/55.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/55.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "e83ac1a541d24ef1888ee5d6d2f46d2f",
   "keywords": "网络安全,杀毒软件",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121313480"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121313480",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/56.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/56.exercises/config.json"
index fa434a7e2231008b12ece4dfbde908bb91fc85e0..80e588b81c86fa9891f6fc0bc1e627569d90868b 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/56.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/56.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/56.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/56.exercises/solution.json"
index 84c4fd1e364928813337710549ffe468e9e8f47e..63e0315ac65b23a29071fc2969af1b5ef91d8602 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/56.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/56.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "7fac3a6d1f594315b26351ea9e5d0327",
   "keywords": "流媒体,短视频",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120983128"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120983128",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/57.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/57.exercises/config.json"
index 652b932e780fe74fc9f74445f8c751bb7a15e5d7..60b639a811e9ee7775a0ab7d517c7adf3a8c7675 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/57.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/57.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/57.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/57.exercises/solution.json"
index c7bfcd0a8f2198cb0c85909abeaed3d15f7c00c9..aa10bc86eca11da864c2b964b5e1eba1c9f3f4b1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/57.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/57.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "bb53cd430e7a4692b17d7f9edef68804",
   "keywords": "IBM,计算机",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/58.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/58.exercises/config.json"
index 32c6854aee72e6baaaf477e4623dba5d5902193a..c6687a728adfe852f919d1d068219b940f3b9650 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/58.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/58.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/58.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/58.exercises/solution.json"
index 976b624e9b36be9f899fccbe1444e554a203f530..0b895bf0a38465306135ddd8189a10f9b03a522a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/58.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/58.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "cf49a23577bb46e69d613c79c130e2e5",
   "keywords": "Yahoo",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121172168"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121172168",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/59.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/59.exercises/config.json"
index e1b39aed4956ed132eb69df6c16121a62f24b1e9..5661cb1f91422b8ec0f80443e2cbc72a75dececa 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/59.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/59.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/59.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/59.exercises/solution.json"
index 39834e83d801930503bfc5616322514ffc971088..97cab85ff0f8c7e7bbe8fa3defa1b45937387cf2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/59.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/59.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "6e2ad06078c547c28988f7f98a5aadc2",
   "keywords": "腾讯,QQ",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121259792"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121259792",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/6.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/6.exercises/config.json"
index ebcbbbd5098934b392301eb3d99d0cf323e03620..19e4f421c16d7c9065f0f5dea1e4b2eccd935f38 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/6.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/6.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/6.exercises/solution.json"
index 3f68b213e7688ddfe9f3ac684ef7ed8a4bd749a6..7df10c2ff7b314620f3a71a82bdcecfa6aea11b2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/6.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/6.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "a38c6b8a4db34a2886ac24ab5f451530",
   "keywords": "任天堂,电视游戏",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120815589"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120815589",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/60.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/60.exercises/config.json"
index b27b083ad7bd2a2467e84111a0aec95c0bb8a405..0cb5b5cb4a4268fdadf8fa81fd7dd0f6371560b3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/60.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/60.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/60.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/60.exercises/solution.json"
index 32b712f774859c99a56e149583fa54039aa8e94e..12a62f800d8a860579121f99a85e375a4f5e93f2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/60.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/60.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5b39d9e337c74e30aebaff805c9403a6",
   "keywords": "Linux,Slackware",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120856601"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120856601",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/61.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/61.exercises/config.json"
index a8d6f4ed46e7a0568f44a736b1f9302fc5766e6c..1bab2d22bbe31af124bae0c19262dfb50ff2e9bd 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/61.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/61.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/61.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/61.exercises/solution.json"
index fb7f2229f68c4b9ba64097f9fcf50db76c390106..32857c9142cf380b3f3c3805d785ea40c1d8376e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/61.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/61.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "097f16f76a5249ee9587742d2a98d99e",
   "keywords": "中关村,程序人生",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120645802"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120645802",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/62.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/62.exercises/config.json"
index 86111c5d667f6a51721cef02626fef4a394d6b77..be820c8a901ea1b273046ab69914eb14ddb6c334 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/62.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/62.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/62.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/62.exercises/solution.json"
index 25345ceda34060fdd23da2a55463ad5734bcea33..7eb09eb23332c76ffda4e58f8a8a3a39e5ce6ab6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/62.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/62.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "75264b2f071f4d0da87f214e2c40d175",
   "keywords": "微软,Windows",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120940621"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120940621",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/63.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/63.exercises/config.json"
index fd39a75dae7fdea8bd819a1aaae7932f0ec186ae..88922c50066be55618a65aeef9ae9e87c1701277 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/63.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/63.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/63.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/63.exercises/solution.json"
index 9fc3d4e45fc86fefb982ec63299831f159bc3f91..fd7f5785af27b5caf0721866bd9edc0f3e9341ef 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/63.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/63.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "09600077fad04d3b8b688ce100d6aa45",
   "keywords": "超级计算机,电子计算机",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120645802"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120645802",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/64.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/64.exercises/config.json"
index fb0576e8ef028f60b6d07edb4022eed9e7c5ee09..b57d24240f1e5b8979417c900504489e9c60c7db 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/64.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/64.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/64.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/64.exercises/solution.json"
index 771c685a76d44f34756e68bdfaf5c98a495380e4..17f4fd10991b46e4c4bca6a1e88a409c223e5314 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/64.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/64.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "6b6607565e3c40788a07af9a12ca3844",
   "keywords": "开源,RISC-V",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121335096"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121335096",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/65.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/65.exercises/config.json"
index 7126b9462497c5ab8cc2b6d4ffb08bf298d04ae7..50ef28a1caad4388a22df9bc3edc221d51dc580a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/65.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/65.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/65.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/65.exercises/solution.json"
index 424ea6c4a4add709383cd5f8965562ff3e5df845..4570ba3d3ab34d3def076cab8fd955ef246a5d91 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/65.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/65.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "f350c4e611094ee6a8a6be5ead160580",
   "keywords": "Apple,iphone",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121070968"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121070968",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/66.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/66.exercises/config.json"
index bcf2ac1ddabaa1e66ca3d6fd2723fcf9f4101223..d4f91ad341c88e9a0b23e5364e9e44ebaeb2d34a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/66.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/66.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/66.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/66.exercises/solution.json"
index 07cd6ce6de9c5c6d455b2f763656071864b6119e..231f7024026d9fec51ebc98beb63c0e5f0aa5c26 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/66.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/66.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "03170ead7ae944d3becd3186140f9ee2",
   "keywords": "反间谍,网络安全,信息安全",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/67.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/67.exercises/config.json"
index 9ef7036f9e20f0f9b416dab578e7a0ea96b7a0c8..21db1ea0bbb055c2664dd280fe1e920f0e0ef445 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/67.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/67.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/67.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/67.exercises/solution.json"
index 85b9ce6b25650f871599ad75b1c354d49e73c470..6b98ba80ed24887677a355d07935d3036a4e4bf9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/67.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/67.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "d92fcb7ce8624e22a4f5df1aa837ee5c",
   "keywords": "Google,Google Play,应用商店",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120695661"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120695661",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/68.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/68.exercises/config.json"
index 61caebc2871670024e78f9b496a1c9b1bc49dc52..f229a3622ff414ea263161b5441f1a729e4707a5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/68.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/68.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/68.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/68.exercises/solution.json"
index 385b9e3b34d722cdb46c633f7612abf2875d77b0..cd6af082748b9c1a4d1d183d05daa0456296fd4e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/68.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/68.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "6e756d6939654591b645c0458629e3b9",
   "keywords": "图片分享网站,网络社区",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120875612"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120875612",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/69.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/69.exercises/config.json"
index 00ba2b5a22ebbce09d5e703571e63b5f463ee04f..3c32c7e5e6b08d5bbb295364075c69062870f256 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/69.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/69.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/69.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/69.exercises/solution.json"
index fc1e064621081021c3b79fc43ad213856a5a7339..692ba03e8c9f4a88bfbed0086109f96a81889bc9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/69.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/69.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "6539c17fae3240a38b12cf929d610001",
   "keywords": "个性推荐,大数据",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121131852"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121131852",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/7.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/7.exercises/config.json"
index 5545eac50f3be379f57a06f717eb9e44d03fc302..19c2c11cac9e011f843fe36c9d133a1110158cec 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/7.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/7.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/7.exercises/solution.json"
index cbd6e9206e9b5c1addd91d8f26561722cbb38c21..79ac5df2f5f06092bc9e7747f39b6c379693d161 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/7.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/7.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "56c12df0b497401582d9ccc82b248801",
   "keywords": "大众点评,社交网站",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120735888"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120735888",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/70.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/70.exercises/config.json"
index 366a81579cb6c8bc973cfd8542d95ad38d763b52..8e74a6892a1e8db7ea0baa0cd83361ec176c2a00 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/70.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/70.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/70.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/70.exercises/solution.json"
index a6a958937ef45d468edba48d830cd4fd2da3f6e1..ed2d78e780a2b18cfebf965f304da8cb2c2cf821 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/70.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/70.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "df501fa6a22744838866ac2a6c87acd3",
   "keywords": "乔布斯,苹果,iOS",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120756123"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120756123",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/71.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/71.exercises/config.json"
index f570f1b61d60b034cabd10e2f9d5d8ae6ef7d5b9..c51cc128b2f42ad345c15ae52dc795ce662f6e50 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/71.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/71.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/71.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/71.exercises/solution.json"
index dd97bcc1f1d8786581195928b6980cf90066039f..e8d1d8bd4a756835f98f13a240387fa36dfc1ee0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/71.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/71.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "4b6a160120784a4196f633c972e93e57",
   "keywords": "TensorFlow,Google",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121213157"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121213157",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/72.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/72.exercises/config.json"
index 7f10eacc8834e156c3b64c2fe91f014bcda9c609..6d0ef6acd061e5d8c39add5f41e0e283ddba9fe7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/72.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/72.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/72.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/72.exercises/solution.json"
index 807f31989085cb2de87b68bcbdc32e0219e8bd2a..6ea4138da0a066ceec1adf312b83f447739f7201 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/72.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/72.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "6a9b05cf049d4f58bd6b3390fc22a55a",
   "keywords": "浏览器,网景",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121313480"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121313480",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/73.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/73.exercises/config.json"
index 1fd693c625acc3578c5874d9a664286b5e3e2de9..16833ccaa28c5a57b388694b676ec25d9b7231d7 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/73.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/73.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/73.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/73.exercises/solution.json"
index b694cda466e91aa42278821b94112b4c9ad6e819..e8d2127f247a28d07f89ea260a2f7d8ebffde63e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/73.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/73.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "693b2693f853471986818554b4312d64",
   "keywords": "程序人生,计算机名人",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120052713"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120052713",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/74.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/74.exercises/config.json"
index a9e60369e2dab8bf9a6eb76505fa341830b41417..bd52d24229313d9a05e1615533092bf6554adb07 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/74.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/74.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/74.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/74.exercises/solution.json"
index 6b4fc3221bb4df4b424b9acc49723b21660055a0..9f4ce40a92705e06f5a77b0fcda09483d854f59f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/74.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/74.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "0aac16d6f8624c1389ec12dd6bfa0306",
   "keywords": "计算机,布尔逻辑",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121044111"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121044111",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/75.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/75.exercises/config.json"
index e37dcb94cd56443a4c13e5637f52f3c04213ba22..07c068f4b85ec35fea84c2eead89e4179adc77d4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/75.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/75.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/75.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/75.exercises/solution.json"
index f873494ebc83fb7b3099b6b6a9598580bef85cb5..9c996bc8acea8f5ca1c471cc0b289123adf8d8c6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/75.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/75.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "80631f6b3f4544a886fcf9a5072533dd",
   "keywords": "网络,网络安全",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120983128"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120983128",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/76.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/76.exercises/config.json"
index 6289f794706d80dfba1bb73c7a7f079ba6d0a9a9..ba8a84364886d079a7fc1dc1634f3b7aa4241fd9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/76.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/76.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/76.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/76.exercises/solution.json"
index 6429a08c9904115de3b18ccb909004166fb523b6..adf2e2dd7c030435069a84acf6a7549354d55fcb 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/76.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/76.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "f06d7b7c5eb74a6099385fbf7430dc02",
   "keywords": "C,Unix",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120715397"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120715397",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/77.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/77.exercises/config.json"
index 99cf80e7be49dd09ebb09a4ea341acdd0867efa4..e64d70f151c451cba56ed3586f73d882dbdf4099 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/77.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/77.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/77.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/77.exercises/solution.json"
index f32e55e0ea5f4c3262169fcbe365b9bc76c39eb6..77b6b93111a5b6b663223e2236c5af26b0c063be 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/77.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/77.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "c3f783ab3d0f4f6cbdfef8c1cb24832e",
   "keywords": "流媒体,短视频",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120875612"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120875612",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/78.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/78.exercises/config.json"
index ea2a495d43f5e686e7418ca3522c9b1933c75b66..a54b54ba9cce33f048d7d9c8ca80c0da4ac10af0 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/78.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/78.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/78.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/78.exercises/solution.json"
index 7473684ffc438b712898a14373d6442db079d93a..59a93e9f582ed787cc0fe24d77de9e7ab474b5ad 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/78.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/78.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "4315b09d93f74c67bbcdae387a377c11",
   "keywords": "Unix",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121110776"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121110776",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/79.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/79.exercises/config.json"
index 3032d646c5b61abe949eb78dccc470446da1be0e..d5c12fdb0149a42f841c01e687eacc9c6befd086 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/79.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/79.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/79.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/79.exercises/solution.json"
index 4e2587c037fe5e4a82c1cdf4240545d840657995..7a15164b088210d19eaa91663f1c7d05d958a4b4 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/79.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/79.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5f208f2625274f0488f6efa26442d59a",
   "keywords": "支付宝,阿里巴巴",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120757806"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120757806",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/8.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/8.exercises/config.json"
index 21bd181a0962a5d944b1822e8b62de8b8a1b1943..9e1d3562fc44b8d3db077b9adeebb7b83b0a9876 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/8.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/8.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/8.exercises/solution.json"
index 826829c2eea3209cc5753e0edc76731c3cac1bd0..6938c895bb452e1c27cc631049952341e0e00a0a 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/8.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/8.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "2dd17bcd69dc45baafccb6b820b3680c",
   "keywords": "人机交互,计算机教育",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120912959"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120912959",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/80.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/80.exercises/config.json"
index 161e6bb9be3765b18a00de2bf61fa3533b7756d5..49a635a293edb44a6c6bd26a834dcc4846e23b0c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/80.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/80.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/80.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/80.exercises/solution.json"
index b95281d2cc4cab2a1f6fc2b79593a787db66ff5c..319e7ddcb820db2eb555457ea4778da8e494e2ad 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/80.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/80.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "0ecf21a140f649f1a1dfebd073c991ea",
   "keywords": "微软,Microsoft Office",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121240560"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121240560",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/81.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/81.exercises/config.json"
index 18a65de530ef1d472bb8c903fc51c83ba560465b..1010517df845c5a30b3646cca259a0f93b5e46d1 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/81.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/81.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/81.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/81.exercises/solution.json"
index 7463fab32341393a8e84c7f0ed56600ce3f7491f..41dd530e799ad57ff4e736df96f5fe115d8e3675 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/81.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/81.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5a4bc3bb36ba4f0daac8aaedb3b0413a",
   "keywords": "ICQ,通讯软件",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121325474"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121325474",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/82.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/82.exercises/config.json"
index 4d8a57e1cf22368264ff2ab58cf278e4f47ce778..d8dbbd8fd0c2a9f3793130a21520a2763326cd98 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/82.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/82.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/82.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/82.exercises/solution.json"
index cdbaa9c1444ca3dac6cdd6eedb12d8015f77151e..b6e0c1376a0b2f0ad22d656e56b9b79e203d3a35 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/82.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/82.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "577d0f5498fc4bf0a2aab2df1adfa150",
   "keywords": "相机,数码相机",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120094247"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120094247",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/83.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/83.exercises/config.json"
index 9e7425ae301d396e45049fef3da935c98318df3a..5bcccb9708e75cea0fe9232bd4d3c330372f43cc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/83.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/83.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/83.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/83.exercises/solution.json"
index cd46ac19ba0c98c9de0358ccc691d34c45d9c818..3d26fd713c2a6c3b4371dcfe533ee773f00d2d91 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/83.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/83.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "73242dcb99064f5c814404a50801513f",
   "keywords": "数据库,MariaDB,MySQL",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121024799"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121024799",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/84.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/84.exercises/config.json"
index f865718139f5bbb17bf90f8b2891a7018fb8a5f0..1652ccdcfdb840163d5e260d080facce0a9a2a30 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/84.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/84.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/84.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/84.exercises/solution.json"
index c21ad14ecdbd6a9d78a78158d7f5ba8f34099ff9..2a79edbe094567e5fbf4cdad632bb6406968cf5c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/84.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/84.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "7882842b6f5c447f94c2f4a44e2d4bea",
   "keywords": "Microsoft,Windows",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120962054"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120962054",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/85.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/85.exercises/config.json"
index aec87fe64a1abe5c8be28c4e37d9b0ff6b41f0e7..85b6f49fb707b1ff1c21131058084782b786cb2e 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/85.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/85.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/85.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/85.exercises/solution.json"
index a773003440e019071cd1216107f5bc7bf42c2f3c..e7dca1bafd9090cff36b7b476bf9ea7fb03e6c3d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/85.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/85.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "f77684f9bfcc48108867bee552182b41",
   "keywords": "移动支付,电子支付",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120779471",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/86.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/86.exercises/config.json"
index bf58db87f31646eb55d1b594f151b2d8c1b6c140..3bf8001ad34782ba50bac830d957f16e77950ca3 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/86.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/86.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/86.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/86.exercises/solution.json"
index 2d3e46a6afc24e4e704cb047265829d493652a06..cc7a962799dbd8c59b658749e03c89b10d517a14 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/86.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/86.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "a0bd920b92504505974b775f61350d78",
   "keywords": "Microsoft,Nokia",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121153445"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121153445",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/87.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/87.exercises/config.json"
index 90df10f6bd674efb210e9936cc3fad8c0eb38b58..7fe0c95c2cc9e555dd794e12d232d5cd80e5134f 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/87.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/87.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/87.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/87.exercises/solution.json"
index 4b16f88487ee01217407ab3ef8c40a86577f2df4..a238bd3443206e8da6241a83ff06e8c248fd3806 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/87.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/87.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "c2b5f01f03e8431db472c0396bac012a",
   "keywords": "图灵",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121272891"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121272891",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/88.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/88.exercises/config.json"
index 01c03a22a66073959c141473990b5d40a806aced..38442f8c1059894a36f90abaa1ed6853c1dc5f72 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/88.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/88.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/88.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/88.exercises/solution.json"
index fc39a4c974d7429349bc2079e9019df716f69937..37767893e2d6640e7ab61463ad9d133a2796d1c2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/88.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/88.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "7452848485e14ab1b0b7da7b67a6348a",
   "keywords": "触摸屏,触控技术",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120828788"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120828788",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/89.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/89.exercises/config.json"
index af8ebf58da11a2bbc480f48aff39989d98f08904..891ede294cce255080909ce22d347c5d96a0b083 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/89.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/89.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/89.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/89.exercises/solution.json"
index 587d88154df23da3a9b3ed6468311a653eb408e2..d51512377e7f14116745ef997c7fe16243decf45 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/89.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/89.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "750a725f387342308a33c5066cd7d563",
   "keywords": "搜索引擎,社交网站",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120682111"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120682111",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/9.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/9.exercises/config.json"
index fb8aff3d9182c6f0b37be154aa120906567493e9..3e18fb02131a521c98dd69bd960ead3127edebd2 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/9.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/9.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/9.exercises/solution.json"
index 1e0fcd166b7ec577aa617fcfd56aac2ae4cfeb97..10125f439677067824326ef0db2559bb65d89ffc 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/9.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/9.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "6068c569d4c94dfd8950896f34c46821",
   "keywords": "腾讯,QQ",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121024799"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121024799",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/90.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/90.exercises/config.json"
index 4917aedc15d3b52930b02603cf0230a67591a4bd..aa4b2f5865af03699eb0bc664f848049488385da 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/90.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/90.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/90.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/90.exercises/solution.json"
index cf02fab72b94001307173931b4233d958a3bd0b1..0b4026155bb38b141a7f503a04df5767359e0668 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/90.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/90.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5fbb6aef7d7448c5943f3983f498a2c0",
   "keywords": "程序员,程序员节",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120927533"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120927533",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/91.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/91.exercises/config.json"
index c03ae45f04e9c43bc10083969ffb9c746f1efe5b..03759ffebe704594d56c682c78b23f362a1c87e8 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/91.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/91.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/91.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/91.exercises/solution.json"
index f6fb474aa895f563cb0e21cded45ebfc4176ba89..23f3d1e9574357a08a395a8d87e2ed3c0f5e89da 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/91.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/91.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "d0b9d3dd95194f8ebc154cc128d02f4a",
   "keywords": "流媒体,视频网站",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120643664"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120643664",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/92.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/92.exercises/config.json"
index 5aa126b0048a84f5fd6431fd940da58ef4650369..255e47321f4cbf1ef3b9afd3c171202e1cb07f17 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/92.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/92.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/92.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/92.exercises/solution.json"
index 1466b801a22474b49d20a478a5419dc47b76e6b1..10a9c03aa00ee162b398c4ca2633ba1e965356ba 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/92.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/92.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "7f03e078fef340e9938ff4944e859c7f",
   "keywords": "OpenVMS,纪元时间",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121364896"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121364896",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/93.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/93.exercises/config.json"
index 0d6c5ec51a6d34c5ef755b6c4a64c9194e223228..4f3145c400ff3a922589586a517fd70cb0065daf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/93.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/93.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/93.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/93.exercises/solution.json"
index 5301ba97bc620a24f732ce5d440c06d2ed07a25e..24ebb99e7025f9c76d951bf454267fac4a503204 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/93.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/93.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "fd80f8e2b7734146ae2e42ec27bea8dc",
   "keywords": "Gzip,Zip",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121058239"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121058239",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/94.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/94.exercises/config.json"
index 9b94fa426870fc531d2c57c27ad2014afb699c23..8a670c2b4ce2db6ac4f4b54bb1f15c05434415d9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/94.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/94.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/94.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/94.exercises/solution.json"
index 6e5f4d058810ad63ede35c56e79d0a6e887b7a7d..174a6659343b2b1108b123826f02226b462d50e5 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/94.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/94.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "db4c69ed5768492f83cd23d9a64450c5",
   "keywords": "数据库,IMDb",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120804305"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120804305",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/95.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/95.exercises/config.json"
index 549d69ff52e176f6d1f2707e15f961e91743e423..61633d048fe6720dd2ab4c669369c5d476a81abf 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/95.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/95.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/95.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/95.exercises/solution.json"
index 340e25dd2a0d8c3f1c34ab53d93bcb9f22c5222c..da8574b60fff263c8b7bda3fd84c2ac6885f4713 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/95.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/95.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "5634f3884ac04205bf08d07ce65f06f7",
   "keywords": "科技,电气工程",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521025"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120521025",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/96.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/96.exercises/config.json"
index 14823e5489d2cb54f543be7745da9532f11ffc16..4b9f64f53fbf050ab1263ea0c7842f5cfec97552 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/96.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/96.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/96.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/96.exercises/solution.json"
index 4f4c4bc608b940160f956320ea16f47907efc6df..79fcc0ce83decf418379c41f9a2d20cb72cf214c 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/96.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/96.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "1a66dcef71eb4f70a6bc588b4b7e968f",
   "keywords": "USB,数据存储",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121272891"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121272891",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/97.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/97.exercises/config.json"
index b86967f44ce8cd996cc11adc18b50524e9a3444b..816f10895c1a49d64382ee82a24b1b443dea58ec 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/97.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/97.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/97.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/97.exercises/solution.json"
index 5c638c09f161b7f30e5f774c867b4e9a1f418e7b..b0f3cda406e02e38b58dbf9c67625d00afd8d412 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/97.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/97.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "50d907edf7ba451e89aa4d3353840f72",
   "keywords": "Google,Chrome",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121409512"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121409512",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/98.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/98.exercises/config.json"
index 2c2372eadf4c86253fe6aaa815c310ee8cef191d..d36aebdccb3c0f35e89a718ebb8c092ec23f5894 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/98.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/98.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/98.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/98.exercises/solution.json"
index b19aa5fe789c115e8372ac64126284a2a0675f86..e1d3f1457558654b638a12b01d037d13074f884d 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/98.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/98.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "0c7eec5476ff461fbb7f86d5d3f583e2",
   "keywords": "电脑设备,鼠标",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121364896"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/121364896",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/99.exercises/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/99.exercises/config.json"
index fd2bcbf67bd1b04d27dfcccea543a22e21a304e7..01cc92b916b24d7fcca7cd1aaa1c7b5fd18b16b9 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/99.exercises/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/99.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/99.exercises/solution.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/99.exercises/solution.json"
index f5d25a2da1fd8dc259ddd2dfa1973e0bafce147f..9d5a3adcf51ec9379e4250e9b5bec03b4e5b8d53 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/99.exercises/solution.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/99.exercises/solution.json"
@@ -4,5 +4,6 @@
   "source": "solution.md",
   "exercise_id": "f6af0c1c3446442787ca8d39d34a69f8",
   "keywords": "Android,智能手机,Google",
-  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120643664"
+  "topic_link": "https://blog.csdn.net/Byeweiyang/article/details/120643664",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/config.json" "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/config.json"
index 751c4f1c8770d48a0e3f333f774f1bd8a06a656b..8f7a7143e6801dd4a8357d5d58c56726c8058856 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/4.it_knowledge/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-3b3dafe8cf4d4c018cf368ec5b10a7d7",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/1.dailycode\345\210\235\351\230\266/config.json" "b/data/1.dailycode\345\210\235\351\230\266/config.json"
index 4d8172238b085bad412cda2527311a8fb01ed7c3..ca8fda4c489b8b58c44b0f3ecb58e9157cb3c2f6 100644
--- "a/data/1.dailycode\345\210\235\351\230\266/config.json"
+++ "b/data/1.dailycode\345\210\235\351\230\266/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-e7e0349d335a4ee081ad979ef3a4f710",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/1.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/1.exercises/config.json"
index 5137a8f734ea55c2fb221072d970eca45ef8a008..452d732880f67277112f49ec28b0ccb59347de29 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/1.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/1.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/1.exercises/solution.json"
index 4ab9cf394aa95ae913991ae1c7934bad5100c146..b17bcfe5948d184d20bbda4a42f46413e65f114a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/1.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "u010765996",
   "source": "solution.md",
   "exercise_id": "fafdfa2e8e56437ea642dfb3d21e95b4",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/10.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/10.exercises/config.json"
index f9349a434382d945c8c648639dcb3f75dd83c5aa..0d83fea1785dc6a12eb4a66caf4b7d5576f45ca4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/10.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/10.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/10.exercises/solution.json"
index a8b675864a2764efe5d8d269e1985ff92b093977..a000041776d38559413ed53bdaa534734bf61eee 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/10.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_43874743",
   "source": "solution.md",
   "exercise_id": "5265ade74d9c43c98e2a88eb972630b6",
-  "keywords": "算法初阶,基础知识,分治策略,证明主定理,对b的幂证明主定理"
+  "keywords": "算法初阶,基础知识,分治策略,证明主定理,对b的幂证明主定理",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/11.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/11.exercises/config.json"
index 7d36bf76fa4c5d05148b34f5c25cf84cedbcc7f1..eccbc4896d671b1c7f2fa0203e8c60808f5d8091 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/11.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/11.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/11.exercises/solution.json"
index 55d45967b4c2ed86af2e8f452297132423aa880e..959efbf7c25481a7dbe326e2092274c62030ba1c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/11.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45814772",
   "source": "solution.md",
   "exercise_id": "bc05079a8d144ad184588ed17949f14d",
-  "keywords": "算法高阶,高级数据结构,不相交集合森林,用于不相交集合的数据结构"
+  "keywords": "算法高阶,高级数据结构,不相交集合森林,用于不相交集合的数据结构",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/12.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/12.exercises/config.json"
index ab5183512a0ae5c46b3f806508ea10f32527327a..6071e23bf5642d782bd3550872ae721e2fb477b7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/12.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/12.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/12.exercises/solution.json"
index 89e25a4310b4aacc2118eb0926cc6188e6e55e14..e3f094216d8aced79ab4182705c08764f1e6785e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/12.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qw13660356826",
   "source": "solution.md",
   "exercise_id": "28493fd954234d6bb0acc46411c635a3",
-  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法"
+  "keywords": "算法初阶,基础知识,随机算法,概率分析和随机算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/13.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/13.exercises/config.json"
index 458cf12468b18791d06ad9c92100f4cdc78d578f..1fc66e02aeb5053780ccfac36c279d1cb8067016 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/13.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/13.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/13.exercises/solution.json"
index 8ccc496c903704e5d49b10b012db50837fffe672..b87f941b801b0dd6ad9a1e24276ab10b87882eb0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/13.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "xiamiye",
   "source": "solution.md",
   "exercise_id": "69471807c64a48d4a531c75fc5a474ef",
-  "keywords": "约分,数学运算"
+  "keywords": "约分,数学运算",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/14.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/14.exercises/config.json"
index cada4302a917e36b5a89c703eb41c439f2c702b3..ef4c7d90f3ebeeafeda38dc528c481abc331102e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/14.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/14.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/14.exercises/solution.json"
index 5c0a129cda56fad971096f1542d6e7a65ed40d31..98dd2e861e3b55577a5a0178b6d906ead173d185 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/14.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "oYangShiZi",
   "source": "solution.md",
   "exercise_id": "551715871e814d718500f8cc0bb3ade3",
-  "keywords": "算法,排序"
+  "keywords": "算法,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/15.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/15.exercises/config.json"
index 9f826612d6648a5796936f6be1db82897f8820b2..b7b6dba191874af20c86d912046d44f4afa5a644 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/15.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/15.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/15.exercises/solution.json"
index 77bc0f9362d3432d072a8c73911ba8b768873ab7..ae05acc013d0efe90a40ffbe3e853804a4eefb06 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/15.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_29404001",
   "source": "solution.md",
   "exercise_id": "de64fd3104cf4997b51ff9481e68741e",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/16.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/16.exercises/config.json"
index 266d596b78788a865458e4084f20c2481c1171e4..5c41a9ade3a5d1c849a9a4a24ca5cf061e3210c6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/16.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/16.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/16.exercises/solution.json"
index c49eca0c83cf7320c9dd3c93f263c49a87258271..8dee6273680c57ef0e7797220d26c118db817d61 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/16.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_32591279",
   "source": "solution.md",
   "exercise_id": "08eb0ca1decd4be9b59ef5822951ccdf",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/17.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/17.exercises/config.json"
index 4f66cf7785e939fc8591915875610440c870e75a..6cd90387e0fe54c2e4d3e7258e001d40867e0594 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/17.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/17.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/17.exercises/solution.json"
index 35bbc7eb09689951f5177cffb40ae5a6a2f8eab2..320753f5b11a7aca88fa1017d4c157f86c8ff7ff 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/17.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45808110",
   "source": "solution.md",
   "exercise_id": "13364b60933343cf82bdee276b57df98",
-  "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术"
+  "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/18.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/18.exercises/config.json"
index e523d7d7f668ceafa9bc8b9924e5de9eff6830b2..a00f58b1c6a473fe53bf9e2c68165dbdcdbbac9b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/18.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/18.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/18.exercises/solution.json"
index 5e792e92fa3b20f2e6077618400604304f6db083..7ee66811a3e89135dd4dc73d4784c312df151228 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/18.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "ohpatch",
   "source": "solution.md",
   "exercise_id": "c9741339e3e148d8bb36f4dedc4ee64e",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/19.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/19.exercises/config.json"
index 2d4454cb9637a4c98e32d864ca7534aac7ab64b5..adb28ed32103844bb266ec28e51e112eb29bf42a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/19.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/19.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/19.exercises/solution.json"
index 44cd88ee35499a0b300edef6cc2a685af6ce5608..860f043b4c02933ef29053ae040ce0eb9e033680 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/19.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "ccqz",
   "source": "solution.md",
   "exercise_id": "658692f122d849e5820bbfcafe79cea4",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/2.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/2.exercises/config.json"
index 5281ff32ad1246175e9d91c73bcfacaa9f0fe068..b1cbea87ea3214bd99cb9dfe4f8986fae9bc632a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/2.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/2.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/2.exercises/solution.json"
index 0f1b3f9c2f80f45113d1e84d203f02b532860b53..fb7015a49bebdaee1256233c8199ca1d53351fde 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/2.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_31328259",
   "source": "solution.md",
   "exercise_id": "6fe0402a3ed24db89b062d4facb32c96",
-  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量"
+  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/20.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/20.exercises/config.json"
index 07429a06f4b9ef609b2a981b5970098c409f8452..51e457d0809908606acc6e547300b49e3b76f956 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/20.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/20.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/20.exercises/solution.json"
index a5f9a0f746552f8faeabdeeffd19acccb16a97a0..af93912238dc56f25e21aa855eae844b4c30738b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/20.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "lumh163",
   "source": "solution.md",
   "exercise_id": "adaafd274929424bbc919eeecf16104f",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/21.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/21.exercises/config.json"
index e63a542148b74e3a1e52c955e6610fc5c619d810..4f833bb5d4727cee8cdbc0a1d5ae769509900d8a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/21.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/21.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/21.exercises/solution.json"
index 1bde4e51949f9b9e0c583bdf87cf20ebe62c62cc..a3edcd00ae756b7f039680f58b5baeb0e251c6c2 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/21.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/21.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq51406270",
   "source": "solution.md",
   "exercise_id": "15f66b0e55ac4032adb5988691b42b98",
-  "keywords": "算法高阶,数论算法,元素的幂,算法问题选编"
+  "keywords": "算法高阶,数论算法,元素的幂,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/22.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/22.exercises/config.json"
index 09ae4d2d540f875e8883c3a7db79897a977df3a1..25b4915b5ec1a6977024dd49113a2add20f32d48 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/22.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/22.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/22.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/22.exercises/solution.json"
index 76c2d61672596e967ac6313f0694560bb1785dee..de406c759db6a4a80fe944a96dbd294dd1ef1d6b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/22.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/22.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32564775",
   "source": "solution.md",
   "exercise_id": "4b667dd8e9684cf0b6803199b4dea008",
-  "keywords": "数学运算,图形输出"
+  "keywords": "数学运算,图形输出",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/23.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/23.exercises/config.json"
index bda497280373cb2647b104e3b62743a3928bb3d1..6231aeefb5d6c7c0775e7c5d3faf86cc0b54310e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/23.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/23.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/23.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/23.exercises/solution.json"
index 00b00772346491b25ddfc3d8473c06f0f8fc73a5..77427c4c2216ab0444177c2935ca1f1ca03cfa1c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/23.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/23.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_41157240",
   "source": "solution.md",
   "exercise_id": "9f1a313a18104a15a16993dc67f8da0d",
-  "keywords": "算法高阶,数论算法,元素的幂,算法问题选编"
+  "keywords": "算法高阶,数论算法,元素的幂,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/24.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/24.exercises/config.json"
index 743ec105eb45bf55fd13f3669b5112935dcf1874..a04069f277e42e8336bee87599c9eb7b4a8b27d0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/24.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/24.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/24.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/24.exercises/solution.json"
index f8463ca52ae1780be76a819ad7ae0b6f898948e9..60e59f4325b43d3f5b8adfc44e5793aa8fba7a2b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/24.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/24.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_44739138",
   "source": "solution.md",
   "exercise_id": "d75a74cf74a64aaba143a845e5fa74b8",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/25.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/25.exercises/config.json"
index 9ca1bea6654afb99138841783e3b362ea27ea71e..c7c28680d875561a3465d7ce3a4b4118398d23fb 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/25.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/25.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/25.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/25.exercises/solution.json"
index 9daf15a84c629cce1aa0fe07fff79a9c8fa05a16..3ee3aef347892b977a7e17e8fafeb43fad5deb41 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/25.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/25.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_31270229",
   "source": "solution.md",
   "exercise_id": "7b4639bc58ec40cba62d0e7025d4600d",
-  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编"
+  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/26.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/26.exercises/config.json"
index 06f6a75eef639a1e7458bbb0dbb1cbcc29d6550f..3eea453c5a24e704858243e4403584ce61fff9eb 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/26.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/26.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/26.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/26.exercises/solution.json"
index 482cd7b0b24e878e3ecf92db08fb9c3ec341618f..e29c357e584c7f71ebdb5b3f0006bcf962173ee8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/26.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/26.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "Kall00",
   "source": "solution.md",
   "exercise_id": "535ec33e9b9f441e9e03a59a68cc9b36",
-  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数"
+  "keywords": "算法初阶,基础知识,函数的增长,标准记号与常用函数",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/27.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/27.exercises/config.json"
index aef4f1a3bd247a0f72795e02b02c8faf1e1cd48f..123a6c620dfca4bcdad8507738dd88af607c6621 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/27.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/27.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/27.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/27.exercises/solution.json"
index e748e64975d8bfb83abc188278ef39680f60cfc0..30add616f3c0a9af3d9194eda67f5a68e2ef6690 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/27.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/27.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_31182221",
   "source": "solution.md",
   "exercise_id": "ad89713d26b348c6ab72d1b227cb5a8b",
-  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量"
+  "keywords": "算法初阶,快速排序,快速排序的描述,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/28.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/28.exercises/config.json"
index 722c23f90321604b6fae9a3c3b8f9460dcdbeafc..1b14eb710e2134163d2115401db28464748f4457 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/28.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/28.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/28.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/28.exercises/solution.json"
index 1819e75b6ec6cfed344cceb00abc75be3d72ba8f..d37d8ece8963fe67860ff71c9473ffc6300ca478 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/28.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/28.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32543603",
   "source": "solution.md",
   "exercise_id": "9f7b44bc0ca244a5b5d910902921af69",
-  "keywords": "算法高阶,NP完全性,算法问题选编,多项式时间的验证"
+  "keywords": "算法高阶,NP完全性,算法问题选编,多项式时间的验证",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/29.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/29.exercises/config.json"
index 9d9948a935dba312920c73f60dec4b18388e393e..cfaa049c1b1e747bcfbec632b0cb005a42317083 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/29.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/29.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/29.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/29.exercises/solution.json"
index b65f035af9cdd73d22e0cdf1ac1ee37f06526b54..03e2ce22bd0d5a86ec894051b805d06a039c79a0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/29.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/29.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c360ad96980d4503a5e1bc0b1865971b",
-  "keywords": "树,深度优先搜索,二叉搜索树,二叉树"
+  "keywords": "树,深度优先搜索,二叉搜索树,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/3.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/3.exercises/config.json"
index 3271e0e3291adf65c864cba9895b4442fcfd1be6..bcdb7e894c09fb0dcd80f6ea20fc0231dc8fe19b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/3.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/3.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/3.exercises/solution.json"
index f6aacfcc25b9620ef6b61cf01b39b44fa352aee5..f0330835b988c9b23cdbf3f8664d3fd97b150ec8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/3.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32805831",
   "source": "solution.md",
   "exercise_id": "5cb9e1d5145d47fab87b6f8e0c239c15",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/30.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/30.exercises/config.json"
index 78d80334009310ee41da27259a95e54addcea270..ba3572db2638502fa5606315d8ee1ad7f59b49b4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/30.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/30.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/30.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/30.exercises/solution.json"
index b63e6eafbf6523deb814ccb7109661705224f505..5ed494b0eec7ea22f4287813f96228e77efe89b0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/30.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/30.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "600f400ce85d47949ee960dbfe2501ac",
-  "keywords": "位运算,数组,回溯"
+  "keywords": "位运算,数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/31.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/31.exercises/config.json"
index 03294e4364807f0810536c7b407bf385331e9579..7a6b8ccc55ed4c0b10a88ee1b3bb1493f04ad4cc 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/31.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/31.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/31.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/31.exercises/solution.json"
index 82b87a8e3030cb8182c0580a424741a5b95c8428..255de5bca8a4f990bfd8ccd10e05ab5fdd71d0cf 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/31.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/31.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "31bb7bc11f944fe7b47650cfcbb7376b",
-  "keywords": "数学,动态规划,组合数学"
+  "keywords": "数学,动态规划,组合数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/32.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/32.exercises/config.json"
index fa404482feecedf7e7148faad00935f305a5d7a4..26a5e203c8c396b7a56bfb1a214bf5a3a785d87e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/32.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/32.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/32.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/32.exercises/solution.json"
index cc0a5c44bcb7048478057f8592f8375065f5890b..60e11f52f5b45767402228a011c865f4a69434fb 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/32.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/32.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "baa3bacd331e4371b700887e567f1fa3",
-  "keywords": "哈希表,字符串,回溯"
+  "keywords": "哈希表,字符串,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/33.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/33.exercises/config.json"
index 6af6d152d18be868729add4e1915c9e2d2a7eff9..dd27ee6161cc4c0c88e37bf1d4e18c1c993fa355 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/33.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/33.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/33.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/33.exercises/solution.json"
index 25a653de7f7e4ad89a94e5376fbfd0b51d96ab0e..af6bf161b1f451a4b42bb4da8df90a779a875980 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/33.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/33.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "93f4a20c10584a4aa9a52d08e6f1df50",
-  "keywords": "树,二叉搜索树,动态规划,回溯,二叉树"
+  "keywords": "树,二叉搜索树,动态规划,回溯,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/34.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/34.exercises/config.json"
index d284ad6f914d3a5819added8fde470aab61b5403..1e1aaca60225838a6b1944ff71686d0b6a298218 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/34.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/34.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/34.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/34.exercises/solution.json"
index 17ee67f628a06f811b42a5f8fa2e536b3909a9ed..28e0a9f595efeb4d1424ae6a9910fa14458c8f97 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/34.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/34.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "82e92bc6457a45cd8a6890a7dcae7483",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/35.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/35.exercises/config.json"
index a4de91baf4353e6e5cc06a477dfac7eaf1d7439c..33ed32fc1490084d66f1ec85745b0d8801cd661b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/35.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/35.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/35.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/35.exercises/solution.json"
index 560cb2d1da64b898d99c977f8cc38726dc19831a..8d0dbdb25b43b87cde33de0b4a911dc72690189a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/35.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/35.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b83b2c495c46406e8776d85e98306307",
-  "keywords": "树,二叉搜索树,数学,动态规划,二叉树"
+  "keywords": "树,二叉搜索树,数学,动态规划,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/36.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/36.exercises/config.json"
index 7d13c099d4af52a97fcd5e8e1450e74d7cd1e0b4..500bcebe0b190183b95630b016706b2bd3705bea 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/36.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/36.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/36.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/36.exercises/solution.json"
index f0e44ee17b1fa92a57e5e40527e4b3f2dfdbf13f..e207411ce066a33ef3d6c34ba160e508e7185921 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/36.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/36.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "166b639fcb7c4523896615e6ea790a5b",
-  "keywords": "数组"
+  "keywords": "数组",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/37.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/37.exercises/config.json"
index 9385c8cbd095a90824a602306e8b26e84586e9c9..3e529d5256c39eb6da51b44e6648e2fb6322c521 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/37.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/37.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/37.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/37.exercises/solution.json"
index 24739e16db98ce5e33b2000a7f26c5deddb57793..191ebc7778b93a56a8ac75b029b0cad60adc6a7b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/37.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/37.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "019e45cad3ba412aa84ebbc18cba97aa",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/38.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/38.exercises/config.json"
index d14fc1aed43d3e97d92bfb1fbcf1c191906a6d3a..1603d046189ace6899e76ee81e8d9027065b7525 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/38.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/38.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/38.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/38.exercises/solution.json"
index d63d19be6d03bcb6f9fad83603dd5c70dd069128..165cd8f9a1d35b88c9e64095ee1a5893074cf8b5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/38.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/38.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c6f46d0c1b2f482fa29cf08bd6cf0215",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/39.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/39.exercises/config.json"
index 31b0456ac2c4d2edffe0ae66b7d14c169cc05ae4..844a18126f0f4f5a7823a6483c0bba52fc63f2c6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/39.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/39.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/39.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/39.exercises/solution.json"
index 2fc91eaf4fb4ac51df5634fd01719e4ae7131fad..54107224645ad13d1ab4d63118b50973a51e2da8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/39.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/39.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1307e303d169493b8d5e46cd3133404d",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/4.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/4.exercises/config.json"
index cf3092bd3d4326d95fe226ede839e2c4008d430b..aaa9f37c66e5f0976537e100541bbb30abc09946 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/4.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/4.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/4.exercises/solution.json"
index 046e8751a0aa041db930450dc9ff759b4d55dbe4..9734550a8135844955eb2100e6f1dcc87d134948 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/4.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_42826033",
   "source": "solution.md",
   "exercise_id": "16bf643a88c848a1835904baa99cce89",
-  "keywords": "算法高阶,数论算法,元素的幂,算法问题选编"
+  "keywords": "算法高阶,数论算法,元素的幂,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/40.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/40.exercises/config.json"
index 789f3ecb538cb31f1b30939739cfeff348d8faba..3bf91c1841379d2fe7fa4569f5ba513b53f9ceec 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/40.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/40.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/40.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/40.exercises/solution.json"
index a686876d7ea006cd365dded83893a7241c2d5e78..bf0ca8801ba96e69574cd50b1122888cceab8821 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/40.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/40.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "ee4e57be8bf44e5aa1032d69b3fe55b2",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/41.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/41.exercises/config.json"
index 6da9611edb796b3273fd5b90d5cf8e1deb8f2b79..86a4e4151b0ff50d5ae7904cbd75c7cbf002ea78 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/41.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/41.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/41.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/41.exercises/solution.json"
index a07ffac258b41272a79c7a77c0116e98b3c14f8d..9e1a2c9a3dac4527dacd6f19aaff32d2c19754fa 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/41.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/41.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "57af5c6123504bd884409d603dd5f7f3",
-  "keywords": "字符串,动态规划,回溯"
+  "keywords": "字符串,动态规划,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/42.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/42.exercises/config.json"
index f83ecb56f97e2fad103db0dcbb934670cc08e890..7e7bd8d20af589bab40baf7b86db14655221f9b5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/42.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/42.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/42.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/42.exercises/solution.json"
index cc6827afd0e9da47555e7c50f58fdb76ef7275f0..564ae9bb8cb33fe9609a5454502612460cfd790d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/42.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/42.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2ccf0ab29b484a67a42e6aa7b5387498",
-  "keywords": "数组,数学,矩阵"
+  "keywords": "数组,数学,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/43.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/43.exercises/config.json"
index 6af03589b51312c6a89e3ea2a1cb4c69d7f84f3b..e76f5e83ac4c4f6cbf8f27352e5a04864fadf40b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/43.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/43.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/43.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/43.exercises/solution.json"
index 97546fe8c258c52ef5ce08b702ab431f669293dd..0ffa66fa035c860ba54500d692a1954c98bbd086 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/43.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/43.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "f46a96dc0f3243df927e534ab3659466",
-  "keywords": "贪心,数组,双指针"
+  "keywords": "贪心,数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/44.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/44.exercises/config.json"
index dc2607bcfa88f85d7bd0adff869dc1f09663ff53..1a3f42ea0478cca0adb3603a37c72f9824c0260d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/44.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/44.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/44.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/44.exercises/solution.json"
index 4d100db0ceddcc06e913a0c400296c96a0bb6a5e..ecc81c4e1be2ffecb755a860990f5794fa135eb7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/44.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/44.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cc1b8932f88e4cc49bedde7f1da4b00a",
-  "keywords": "字符串,回溯"
+  "keywords": "字符串,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/45.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/45.exercises/config.json"
index e272c17195f8d915101137e0056afa8d26694182..8134ed8a12bc76cb60dec8ed0c3186e87c3e8009 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/45.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/45.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/45.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/45.exercises/solution.json"
index fb5114423df8469bc7bd1e4b66aad18d04fdde6b..5521dca5f236687312b8bf588669538bd193759b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/45.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/45.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "458f6358d7514fb6bcdfd7f9238c3d7a",
-  "keywords": "位运算,数学,回溯"
+  "keywords": "位运算,数学,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/46.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/46.exercises/config.json"
index ad592d184bc531731a4447d3d09d22a3a5db9aa4..73dfb543e71812749a3a16280957880c1a01352a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/46.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/46.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/46.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/46.exercises/solution.json"
index d3db21ef6cc2dd64de42bf9c6a3300fbe7ed04af..855c5dc9a8af2d26a1354186146b48d33af0bb27 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/46.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/46.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7a6f6ca9a3c04afca7db080c109ad995",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/47.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/47.exercises/config.json"
index ef262463e25f5d96b40954e90c9bdd4ec023e729..0051c5f07691d7f986a6490ea5bdb4165d107640 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/47.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/47.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/47.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/47.exercises/solution.json"
index bb067cd3b3deb3197e514f20b68a4db4c2a15233..822e4e06f0f44d42cc93f2c56a80e66e40c26089 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/47.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/47.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "79def0a76b1546459f90832b72be77f8",
-  "keywords": "位运算,数组,回溯"
+  "keywords": "位运算,数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/48.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/48.exercises/config.json"
index c000b65486ce8c4c82924878a3450775c0e3890e..12e4b3b2c9941d1ce1e16906a13052a7becbb0ef 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/48.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/48.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/48.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/48.exercises/solution.json"
index ab45eec0be92571c90b135100b1f56d658c061a1..574e9af8d7de9c765b78712d68e05f0d15cd3e62 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/48.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/48.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "4f4a298d07b14920a0c442fae663c09c",
-  "keywords": "栈,字符串"
+  "keywords": "栈,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/49.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/49.exercises/config.json"
index 369d1401b93853bc9de3e6b4b60ab2cee044944e..3a9830336e411b370987710594973c38d57234a9 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/49.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/49.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/49.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/49.exercises/solution.json"
index 17981ffddf021d85839a5994c4cfbba203a7a3a8..778234a8ff9b3b85f30013145b35f17aa8e284d8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/49.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/49.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "fc109d2e803d4682bc8c90bff1aa9428",
-  "keywords": "递归,链表,数学"
+  "keywords": "递归,链表,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/5.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/5.exercises/config.json"
index 149b825b9d819d256a872e6fd8d1e7395c61f064..7c4ab0ed64b4fcceedcc5ac361e14696686855f3 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/5.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/5.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/5.exercises/solution.json"
index ee84cec768ab2b2ae36ca21a5b5200fbbbe9cf09..55afa51526ca083d498e64557b48ad7913ce54e8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/5.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_20692663",
   "source": "solution.md",
   "exercise_id": "4583002df4554ecd90bef873754b79e1",
-  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量"
+  "keywords": "算法初阶,最小值和最大值,排序和顺序统计量,中位数和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/50.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/50.exercises/config.json"
index 887e963a79aa99e0c067dde63dc91cb003138dd0..4ed3ecc26f07cd724ae48b4fceb4504d9f80a49f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/50.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/50.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/50.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/50.exercises/solution.json"
index 316cc37f35a7e213a3ed6230083aec93e81c4683..e54684836fb64cdf2ad6c68e92bd70b28e95a13c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/50.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/50.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "227a6d828db449378c393687dc7973b6",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/51.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/51.exercises/config.json"
index 58df60a1441af243e06088d4247051079ccc937f..ee6fdddd99d888462ede548df3404aab302bd8c2 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/51.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/51.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/51.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/51.exercises/solution.json"
index 81d8e406cbd329873e8dcb94e4fc57ddc1300389..ec7f765620c47c8fdc823629ce676b3083f58b98 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/51.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/51.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "ca49a1a190c646e99b6681637db6af05",
-  "keywords": "哈希表,数学,字符串"
+  "keywords": "哈希表,数学,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/52.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/52.exercises/config.json"
index c895897fb6428105110c0bced9a88a5254b3a30f..a3c1b6c793fe06e373bd197cecf8aa76c2db14a1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/52.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/52.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/52.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/52.exercises/solution.json"
index 16ef2aee06b516282ee365349a7ecd73ac81800e..2bb1618f0baff3e6d711486b80dcd63b641effe0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/52.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/52.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "bef2ebd0a073475684a90db3e02ab3bd",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/53.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/53.exercises/config.json"
index f16ca7c9688fbcb6a480ebf1bcdb9c863dbe8cce..6dbc7fc08221a98af3756da53d0a0ffdd670ca71 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/53.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/53.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/53.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/53.exercises/solution.json"
index cc110913ed78f8ce4282779dc5306f644049240f..c82870392d0b3367d36c261e3487dfe89349cc2c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/53.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/53.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c999971e21ad43e3aae8542f7740dd5c",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/54.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/54.exercises/config.json"
index 697ac7a783679d22487b552138e27e7d4938c5d0..537ee1d8a8e6b39f4d1400cfad6bf5d8cf5dbb50 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/54.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/54.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/54.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/54.exercises/solution.json"
index 9677ad2ba3d69a245f35afdd86546e9a0613e3da..2ee31adcc72118bc355063e9592dff7f48df5116 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/54.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/54.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d9fd29e18762417cbf523fbf4fb0aa5b",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/55.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/55.exercises/config.json"
index 2e0436757bf09432ad25012a411f86b56b8ac94d..fd6e430944c9e80b535c4298a33f68dbab003404 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/55.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/55.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/55.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/55.exercises/solution.json"
index 15e955576f906d9016d1d658bb6da3f742262c51..4013904c441cf872e30b94f601a51f49c2da1e03 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/55.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/55.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7d7aea05317f4fa29074594e49a0cccc",
-  "keywords": "位运算,数学"
+  "keywords": "位运算,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/56.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/56.exercises/config.json"
index 8f1e7073bc05e7b02a43302123aee2d306cb13c8..ce29da8ad2294e2f9d4ba130975be2ddf89f1587 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/56.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/56.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/56.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/56.exercises/solution.json"
index db1e1a7503db941c8bd161431ff832649a4ac0b5..fbfdb9c9c2a58ea1b16f99f0e8ded60b2730b3c7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/56.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/56.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "0f48bea424f74cc99e0a9923a379de7b",
-  "keywords": "数组,矩阵,模拟"
+  "keywords": "数组,矩阵,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/57.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/57.exercises/config.json"
index cbe9bca22bbc704ef2b03f8ead3e4b982cc2b9b7..23bd08dee8fc699217d94c6c8d5ee4d3ead95a34 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/57.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/57.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/57.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/57.exercises/solution.json"
index c15d4d607d0c355dc30baba154813c2a1af3dcb7..cf39493a31714583dfbeff92ebc7da9db149653d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/57.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/57.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e9241eeeec6b4b34895f4660e3c63ec1",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/58.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/58.exercises/config.json"
index 28a3352cdb14cfc369d316079c9fd589a385c042..d758788304a3f555d8993cac5d70339f2619823b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/58.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/58.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/58.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/58.exercises/solution.json"
index 2f82c0e42f5edf8f0b94c9b5529c98ded96f31da..539c96f34096bfb1cca93edb6965d5962f916556 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/58.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/58.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a3020da0581c42f6b867cc64c1144d75",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/59.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/59.exercises/config.json"
index 28401b2210484141d7212e52ed98a68c4a4da709..3b95057ec1a6d6a90159066babe85e151e078ee4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/59.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/59.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/59.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/59.exercises/solution.json"
index 8e11f51306fa588246a4c38ba473b057a77ee6eb..d6f7b7859438bbfd60437b355a0150cd14e81d3f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/59.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/59.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c3bad4cbaf914741b47c8e84ba7c40a7",
-  "keywords": "数组,二分查找,矩阵"
+  "keywords": "数组,二分查找,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/6.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/6.exercises/config.json"
index d176678e3810ece7c92871600c253e2bc7bff6d0..caed0695ed5eae978f7020859211835bd82270a6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/6.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/6.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/6.exercises/solution.json"
index 8cb2ed050e814b1c80cf8232ceb6e3258c99b8ae..7ecbf89f1e41e40d5c076e132fd9d9c87514ee43 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/6.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "linjun1735",
   "source": "solution.md",
   "exercise_id": "b167d2a52cdb4eaa8594b1ae719c5a84",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/60.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/60.exercises/config.json"
index c435f921f8f3b2eef61f37fc199a28b563a4a9cb..5668d329146d6513f6f6d0835aed5854672f4408 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/60.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/60.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/60.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/60.exercises/solution.json"
index 13805afca778cb15cccbd2a4f2a33a8397f5a3a0..db3532966075371c34cfb79d71f0931fbc180ce5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/60.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/60.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a3f9980b1e51486dbe5eb11c49d13295",
-  "keywords": "递归,数学"
+  "keywords": "递归,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/61.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/61.exercises/config.json"
index d47c6b2d26cc9c04a9588e753a786886aa709e73..2cffa4a1997c5bbb5629dea7f82fbcf8a5f276d4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/61.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/61.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/61.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/61.exercises/solution.json"
index 7b6fea5d94fe6bbb259e8cd3959ef1ea804012d4..f86c36942e1e2c60f9fcb27ce0615feb389a2536 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/61.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/61.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "6cf8646d7f0540569d46a883e4795dfa",
-  "keywords": "哈希表,字符串,排序"
+  "keywords": "哈希表,字符串,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/62.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/62.exercises/config.json"
index 40adcf7794d0e96eaac17041285bd0a685f12c9b..3643634d6d4ca9444433ca88fce2549edd2a9eac 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/62.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/62.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/62.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/62.exercises/solution.json"
index 6005ab3288344c28f936d90c5ae7c15115acd653..ec404d4b01a454ccffe55ad9dd7cf0907e254663 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/62.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/62.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a5cbb63775bb4b6d80ebcb4b2dc0ca66",
-  "keywords": "数组,哈希表,矩阵"
+  "keywords": "数组,哈希表,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/63.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/63.exercises/config.json"
index 3bce2fbbc1cd68b2df1608bb76f2164d6c530a1c..5c2cf845cfd808efa8ffc0de6771228790e9ed6d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/63.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/63.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/63.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/63.exercises/solution.json"
index 828fddf45bcbfe7e41f1658d319edfb588636ff3..9c4c06f0a9c815a66446f9589f6b7995f6eb7e81 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/63.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/63.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b79586225ee645c59544bd27132cb5dc",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/64.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/64.exercises/config.json"
index d6250ca65cae48607f1c1b30f6aee08bcb06c747..1db2f9f7badf469fa1cad0990b0443ebb14604da 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/64.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/64.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/64.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/64.exercises/solution.json"
index da82bb273acefdf5cd7887f2998eec600f5105ec..6982159ce46a1d3c59738ef6bd8196be48c5a8c6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/64.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/64.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "837128c8eb2c481ba2cb3ca390a5df10",
-  "keywords": "贪心,数组,动态规划"
+  "keywords": "贪心,数组,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/65.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/65.exercises/config.json"
index be308cdf86c54dfc8747d167aa487082540e4a03..0efea089a71c2d5bcc87976fefd7bda656e14920 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/65.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/65.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/65.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/65.exercises/solution.json"
index cb49a5d79fe4e419c13bf326597cb9e7e1f4652d..50bc18755652f47b6ae08e455bcbbae98daa72a2 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/65.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/65.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "04e3a587f60c4cc5aeb21d77711430f7",
-  "keywords": "链表"
+  "keywords": "链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/66.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/66.exercises/config.json"
index 7d1891abbd6e682385fd4f9203245a7f14fcea12..53551b960a3c62bc56add312d97daa79807d48c4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/66.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/66.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/66.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/66.exercises/solution.json"
index d177b2f28deebf98476adb6fe88b8e2100725a86..834168a709f817938d21ef756325657acc3770f8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/66.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/66.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "0e7ad87cf9d74d31b2f292832b782fe9",
-  "keywords": "数组,动态规划,矩阵"
+  "keywords": "数组,动态规划,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/67.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/67.exercises/config.json"
index b0e198b865b49cfc448236bf75fd418a6e9e2bcf..853f9110af266f1cd8563c1b13cce0473feb2488 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/67.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/67.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/67.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/67.exercises/solution.json"
index 904b697a23095190252917a1d5add2fe33563350..a7375ae0867c81283816081ed0ef36445d17eeee 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/67.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/67.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "dc13813782b9433eb72a016d587bbf85",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/68.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/68.exercises/config.json"
index dcf11d8dfffc7d7a03b63f4575f12cca52fde02f..50fc6847a55f4eff45a2c40375de3ab7b5035632 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/68.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/68.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/68.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/68.exercises/solution.json"
index 9c50618bc49a9fdd63aec6eeec38efdfc50c22f9..e8ef405939b14b052fc9a7f08c0fb0551ed5c916 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/68.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/68.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "28697aa8d9b94ea4877b314637b97fbe",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/69.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/69.exercises/config.json"
index 158efd341f09b2feb832c7964484cb0570486093..0319c3eba4c315b44e0ff26fffc71a325ba3cb3d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/69.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/69.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/69.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/69.exercises/solution.json"
index 3995fac7e7897141ad4c7b1f92a5db43b0fc5f15..bcf704d61edb745f21cc5edc55ad0cb35cc30bd0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/69.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/69.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9bc368a018d24c3f9ea1cf543c783c0c",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/7.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/7.exercises/config.json"
index 6f0967428409633505587e90c969067d0ff74cd5..c6d3c1591c78c2b82785b26482f3bd8e9b7cd0e0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/7.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/7.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/7.exercises/solution.json"
index e0f323d97c8cf61cf7f3351c083f03f61fe3cf47..56d8ff08ceb2d0a5aa18a0e514f839a36a3480a5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/7.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "chqing21",
   "source": "solution.md",
   "exercise_id": "83ff4228dbc34fa3b8d9ebad0abda73b",
-  "keywords": "算法初阶,基础知识,分治策略,证明主定理,对b的幂证明主定理"
+  "keywords": "算法初阶,基础知识,分治策略,证明主定理,对b的幂证明主定理",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/70.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/70.exercises/config.json"
index aa6dae8d166e71aa058e02334bffd6089eb59398..dc40f261c58ee916e7586ffebc1c0f314f65725f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/70.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/70.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/70.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/70.exercises/solution.json"
index 5b26af65c26c530a824345872a7b309461180ed1..35acd06b285164c7d055665e97e437e6d82cdf79 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/70.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/70.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1472af7b2fbd488290d393506127b757",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/71.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/71.exercises/config.json"
index 5eeeb24d1f61e1b6e4f2e06b7c429414050ca68e..44147ab19f2449f68ce266a7917de6b1e1cc4ee6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/71.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/71.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/71.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/71.exercises/solution.json"
index 0a5df1943126088bb427bbafa604804604181e1d..0ab300920a94e9b269faa940fea5dd7be4da7229 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/71.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/71.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "31c007d8e92d45df854f76b2da1cb73a",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/72.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/72.exercises/config.json"
index cc7aad7e0d3550774a7922ec3eb88cef39d201c7..c43d40f979925edc4ab9a0724f8730898b3da53d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/72.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/72.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/72.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/72.exercises/solution.json"
index 9248ff620ea1dfa71e92f3459970444cb6a203c5..f19579b3c8a7ea973df599439d41c84518143e65 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/72.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/72.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7dbac7048db7411aa3b443a245a2b4b6",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/73.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/73.exercises/config.json"
index 509676ca7df9462488c0cb2ceda4eb571c0f13e0..60b1dbcd436ee05ebdd61b0318ff13fef9fa9f9f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/73.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/73.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/73.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/73.exercises/solution.json"
index 0ee86915084d270b80154a9d6df385ef0ef35971..bdb010264e51b9bc1f09913e909c365179f5cd47 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/73.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/73.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d6e56bd60df4435b9f47c04b4374b804",
-  "keywords": "数组,排序"
+  "keywords": "数组,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/74.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/74.exercises/config.json"
index 1a567b12fd4f79450726a3b095a8ede3546339d5..300d05f1386d178ced3393cb46da7647e673e9b3 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/74.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/74.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/74.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/74.exercises/solution.json"
index cf9b153207f2f8d412c5c4aa1d24b746c1fcae56..b5619c86df01b81f5d5cc735558cfac017000fb7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/74.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/74.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2eba61039fad45a7a13c83b2fc41058b",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/75.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/75.exercises/config.json"
index 250a2c6cddcb40fb59a3a558c91d6622f6625296..42ee5cf48ab012260213e4336d0c7887fde7cf77 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/75.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/75.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/75.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/75.exercises/solution.json"
index d7581bf471036c4cff623cab8ecd84d2736f2a3f..2721f758a92f90be04103b41f39e863b4e55d579 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/75.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/75.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "81767d7398f748a8a652eaec95975385",
-  "keywords": "数学,字符串,模拟"
+  "keywords": "数学,字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/76.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/76.exercises/config.json"
index 4bae582a87f5fc7fac3b68cdc29de61a56bcca64..d63353862576c3d0b131a7ec36a685778aca10db 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/76.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/76.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/76.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/76.exercises/solution.json"
index bd60775f4a290b6cd8390e12218d90fe553c6d60..85ca979b389a35370f4e104d24f4afcf210bf597 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/76.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/76.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "85e648677c4a4d2f91b670310348f77a",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/77.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/77.exercises/config.json"
index 6fe8ecc81f98b0193a9e006802d252ec0f92cda8..b2443d52c5ebb9f5a4d94d39649a9ae53fb1a6d5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/77.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/77.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/77.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/77.exercises/solution.json"
index f92734a0ed8bc765fac9cd0ba53e57d4586a5bd3..1da5c4c3c2871a2000ad0d2fdb943a84f60e7de1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/77.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/77.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "6b2821c095b94e7499a60edc54515517",
-  "keywords": "贪心,数组,动态规划"
+  "keywords": "贪心,数组,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/78.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/78.exercises/config.json"
index 8ea9c7347706b86677e5251b314bf0446387cd26..26cce5592f9080e8c7ada26f45dac349445b63ff 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/78.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/78.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/78.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/78.exercises/solution.json"
index b7148c03b4546d0517a0b38ed29ef40bbf883736..4b1dd146713ca3d7c2b50136240465e4f9f84b71 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/78.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/78.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "485511cc5a7a4c6e8fdb39cd60d07047",
-  "keywords": "数组,回溯,矩阵"
+  "keywords": "数组,回溯,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/79.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/79.exercises/config.json"
index 258372a8a052e266efd1e5c1a61e71a2b243fc9c..2d370bb41bfe777203838c451f8dcb80fa5a8bbd 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/79.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/79.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/79.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/79.exercises/solution.json"
index e969c063ceac95d4a08815af7ff765073001299d..696c662b2c6989425df42516898c832ff8bf5bba 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/79.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/79.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "4655300e1df74e79ae306dd06c7c4cbe",
-  "keywords": "树,深度优先搜索,二叉搜索树,二叉树"
+  "keywords": "树,深度优先搜索,二叉搜索树,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/8.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/8.exercises/config.json"
index f8f8044f3ec5ccdaa004e5580a3897fae6dd3429..732acb350d06a23af5d3124d12bc0c6938d783e8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/8.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/8.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/8.exercises/solution.json"
index 31606ce311dab12f7c63a4463f911d2e97124052..3acec912cfe3392cdaacea517653fd178ccdd730 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/8.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "wojiaoxiaoqingting",
   "source": "solution.md",
   "exercise_id": "8e6b1f337d77412d8cbfc256ba0e5f6e",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,期望为线性时间的选择算法"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,期望为线性时间的选择算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/80.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/80.exercises/config.json"
index 2a023f58388870f4f7c3670ddec039d48162950a..1c2dba5aeadfff097ca00972bd3e9d1676f8afe6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/80.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/80.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/80.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/80.exercises/solution.json"
index 7f300c627861749383c9c4c0d0f19e2e4efe8b89..82e53a4797a2e7ce53014ded8b50fe729f7c9dd3 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/80.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/80.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d880c4799a52441f9d30628b196315d0",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/81.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/81.exercises/config.json"
index 880cca8818145d61ae9684edfc61145e863cd0ec..4c8b2dc38af816255256f287408d303ebd9d6223 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/81.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/81.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/81.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/81.exercises/solution.json"
index d8fb755505eb611f96863bb3d70979e287cbb789..5e344355dccd4341026579c80ffdfd4deb278e79 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/81.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/81.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "f2711df719de488dbaada64188994f74",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/82.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/82.exercises/config.json"
index f1546f331dc7e3db6d8c8c5b9f051d7b7a3db5d0..e4298239d54aa0d47a54e002b8937cc5c1172c5a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/82.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/82.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/82.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/82.exercises/solution.json"
index 3c47d6013f8fb92ec18779eafc8797148a15d4cd..6f4988e18f044fae3c79f25526723985f11dfe87 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/82.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/82.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3e719cb3f4dc4965869967acc997108d",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/83.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/83.exercises/config.json"
index 4d6cb933919c96e0f72cc0b81b810c09f3352043..2570c6a49be668b4a7203e39b3656566dbc95839 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/83.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/83.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/83.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/83.exercises/solution.json"
index 17cdac48f91bfcf99199ee9df9b27bbd05e1d171..7698f02bb51927f8c9ee7f78196723530a6333a2 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/83.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/83.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "03ce5873e9874d519a639d13cbafda4f",
-  "keywords": "数组,矩阵,模拟"
+  "keywords": "数组,矩阵,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/84.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/84.exercises/config.json"
index 3658869c31f065be4b5b71f9dbee579a70a7f4d2..d8d9ff5c02c019fcb8f9579112488497f98bb347 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/84.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/84.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/84.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/84.exercises/solution.json"
index 58eb8736f4dd7cfb1d26a8e4ae4eee5aa160e08a..3935323bd0104578345cf7c37f2fd820727aa46a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/84.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/84.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cb4c24a331b64c8c91916b1d751fa87d",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/85.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/85.exercises/config.json"
index 775a1f2a08cf6dc2787f4a1c9a4bee981910456a..f1f1ba2145754b69bd658a2b0565c8d7a72db841 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/85.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/85.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/85.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/85.exercises/solution.json"
index 18b706c129801ac34825449948e171cbcb01df23..a0192fd15b711bab01276b91d99c23c8656b0b38 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/85.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/85.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "85a319fbe4b643e0b11939d9434f8a3e",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/86.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/86.exercises/config.json"
index 0506b42d05173e9564899e7a103a49e32cff2ecb..c6b053805b16f7340dd6f3c2e43e6ccd57ee0139 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/86.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/86.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/86.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/86.exercises/solution.json"
index 307fa2a2453e40b2fce21c703191dc060b82a595..835715a8d65087b00f0938ad0a5f452743cfc118 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/86.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/86.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "49a32f00b67543ec98399a8e3266b20e",
-  "keywords": "数组,动态规划,矩阵"
+  "keywords": "数组,动态规划,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/87.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/87.exercises/config.json"
index 49aed7feed75f5bc5c2600e291260c35927b0499..a3c6ae73304ce294fb85b97a7db6d767b620c250 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/87.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/87.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/87.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/87.exercises/solution.json"
index e50f07d293c9486846fc036c0a70a7265293d6aa..13e4e53d14ff70c59690bce77fc7a26325abe817 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/87.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/87.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "46cd4f2a4d904b3e8e261a2904f5b9e6",
-  "keywords": "数组,哈希表,矩阵"
+  "keywords": "数组,哈希表,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/9.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/9.exercises/config.json"
index 1b46df906134dffb5ed2f7f3895f7f9cb60adc7a..5bf20fb228a142a776f3b791acabfdaf79f59d80 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/9.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/9.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/9.exercises/solution.json"
index 8ab476d2457e2ad4efbe0215f99678a6ba4f218d..d6c3dadd81c9356ab420b77774450c51fb2856f8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/9.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "oldbiestar",
   "source": "solution.md",
   "exercise_id": "90d989a6c03b4d1190c2a5a512d4c3bb",
-  "keywords": "图算法,算法高阶,图的表示,基本的图算法"
+  "keywords": "图算法,算法高阶,图的表示,基本的图算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/config.json" "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/config.json"
index 867f2e2e460743b2820f2ed774a6f523c39629ad..0d38eb15991d9ef70cdb98331738ee1394458b53 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/1.cpp/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/1.cpp/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-43fd15a13a1f43d08b5d9b72d5a5cedd",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/1.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/1.exercises/config.json"
index 4216cdea4d545fb16fdb97a8e39fca434fb96e07..235899ae157f8227e3d677861c7384af5b085e2c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/1.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/1.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/1.exercises/solution.json"
index 87510ef7e9b6ce566357525e2dd3da942caf80a1..bc768854fbf06d5c5935866306c9bc40351a9b05 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/1.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_30492837",
   "source": "solution.md",
   "exercise_id": "853c9f5792e8437ba59bafcd5804f968",
-  "keywords": "算法高阶,多线程算法,算法问题选编,动态多线程基础"
+  "keywords": "算法高阶,多线程算法,算法问题选编,动态多线程基础",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/10.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/10.exercises/config.json"
index 70fcb44a91dfc9dd450c1533c210dfa4230d41ea..902003a080c9d960ed4cbec7640e1e050fa0aa9b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/10.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/10.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/10.exercises/solution.json"
index fcc713a6195f7a79983ffc89f81b2580312147a9..8a5a75ae2d573b8374d0e606f9beb6cf93bc04b7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/10.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5856e70cd3a5422dbad072f18477ed35",
-  "keywords": "树,二叉搜索树,动态规划,回溯,二叉树"
+  "keywords": "树,二叉搜索树,动态规划,回溯,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/11.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/11.exercises/config.json"
index 4c3d96bfcfa563dfca1151816b7deddfed010709..478d63f59ccc7678d93a12c44f0797c70055f7cb 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/11.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/11.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/11.exercises/solution.json"
index 73dd1b8206bed78621a31f4ee22db8fd61912c5a..9c629c3f9b016ddf8732c461b5220940bb8855ca 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/11.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "801e487f54b446efb2aee528636f5484",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/12.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/12.exercises/config.json"
index 7763eabdd566d3faf5644a8f5c9fb8f774e99687..aa60d80b728dce58b551b1f3432c7e74c008ae2d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/12.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/12.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/12.exercises/solution.json"
index 80b193f64e11c3577af92c01da66f8f4d49835cd..7fbef4bb6d9f436f8b61497ab0e50345b96cc9da 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/12.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "117c1490fa86467bb299835aa5d0b3e4",
-  "keywords": "树,二叉搜索树,数学,动态规划,二叉树"
+  "keywords": "树,二叉搜索树,数学,动态规划,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/13.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/13.exercises/config.json"
index 98b6728339f6d839abc53b1ff087030d7e211037..8dfb0673ea110569adaab44a9dac237f2c618821 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/13.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/13.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/13.exercises/solution.json"
index d11541f3dc691c478e233c00b26fc4c67a27198a..a291f143dba0777c8d3ab31e7e3d4dd9285d3372 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/13.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a6d92383b9494df9871ae265f38784b4",
-  "keywords": "数组"
+  "keywords": "数组",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/14.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/14.exercises/config.json"
index dcae86178de96435f59c40b0d5e58e830a0ec811..bccf92729eb131cfc5c9435ac9240b37b435ce8e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/14.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/14.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/14.exercises/solution.json"
index 4d59135c4e36a98e0f90cd1749fcace979115def..63f658941e5ae1743235b5a60c335b3edcab01c4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/14.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b83f11e3c3994e3c9d5d2668998c6d47",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/15.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/15.exercises/config.json"
index b7cd905fbf758028f890b10783c138616456d89b..06be0978bc4412f135febefe7a053b6b4378577a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/15.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/15.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/15.exercises/solution.json"
index b714cc1f3a161de3802521e9a676e8ec297b8767..1f88317e0350ccbf5da2824911f7a89d17a081d4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/15.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "ea5545b1b16a43f48a2a587e7ffc89ad",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/16.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/16.exercises/config.json"
index dcb78ce5de7b284826e600339120157066196350..d925bcfcdafef02dcbc92543c4cbd58adff44608 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/16.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/16.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/16.exercises/solution.json"
index d0fc5fc78b98466f8b59346a789ec2bf9561051d..fb4cb5febb92dd56a579c9977aab8e9d4a069697 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/16.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "bc75e6257bb7439881a9db2871ac4a95",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/17.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/17.exercises/config.json"
index 1ae576ad3cb3fa6c0c6d2addde3bf298927d71e5..2f91994b4b3a2f50294a2087f1f5668ab068fed3 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/17.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/17.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/17.exercises/solution.json"
index 4d29ec7ef699b2d0a00b187b99bc20e4454ba63a..4e7f4b74094466c70c2332972a4244721947f3ce 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/17.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "0ae6182c437147868b6d3b219fa6dd63",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/18.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/18.exercises/config.json"
index e7750f12bb2e5b21b459845faf2643df04e31f5d..7ba4d2d755718d425af33b01742cafddd94b053d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/18.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/18.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/18.exercises/solution.json"
index b404a70327bc3aa6addfc63f9e78e5c7ec264941..0bd64c72c3f7f94f1f77589e5e006204ec546001 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/18.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5de6d3a947ce4b77b1cc47813751d999",
-  "keywords": "字符串,动态规划,回溯"
+  "keywords": "字符串,动态规划,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/19.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/19.exercises/config.json"
index 0a8613a8b1e54c3d085c82721afccfbfd1f2dcc5..55a0e70a01565ef9deb1ecf375555ea7327f99f0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/19.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/19.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/19.exercises/solution.json"
index e7578ae97bc78fbdd65acbf32153efdab85c1fad..9810fc3a4725ca41d463ab8d09506acc197075a1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/19.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9dcdf90f0efc43c49b06654f23a87092",
-  "keywords": "数组,数学,矩阵"
+  "keywords": "数组,数学,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/2.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/2.exercises/config.json"
index 3999988c8a1062dfff8d91e5d31be447e89d51c4..c0308943a5063e75deff4828939ff24287056736 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/2.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/2.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/2.exercises/solution.json"
index c0f35524b580e145f6260a84889dc5e7fdaea06e..f71b6611b20d6ff0c17c85e3c3901a9c30f47777 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/2.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "bd4f39d2c4c94041a17bd273dbdfde6f",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,最坏情况为线性时间的选择算法"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,最坏情况为线性时间的选择算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/20.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/20.exercises/config.json"
index ee0c20ee6a033954a4c8e00c478b31e7fb999671..e8c19097f7f0b835c24bef41bf9966ca45d3faa7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/20.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/20.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/20.exercises/solution.json"
index c20cb52aa13f432a59f73c42211b967bb4524a12..b7de2a8c24c44885676db79e2573f175b0a6bdb1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/20.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e53e28eea076409c9f0bf72a7cf601f2",
-  "keywords": "贪心,数组,双指针"
+  "keywords": "贪心,数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/21.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/21.exercises/config.json"
index 500d2187318f4cc98db3a02cbcbc86e2eb529c18..3cc25c061238ca005bf6e9c5f33c929aa7c185c9 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/21.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/21.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/21.exercises/solution.json"
index 9bb39b71a2d0baaf3ef1d0e2d1ecdc3b4ce0ca7b..11caa8ea5baff55feea67d2bd54ea1b4d9058dea 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/21.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/21.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "430f8bebba4f4c008f88ca876bb703b3",
-  "keywords": "字符串,回溯"
+  "keywords": "字符串,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/22.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/22.exercises/config.json"
index 354d77801a3d7e06c3fee05300cd5e1836c0174e..fe3104e5db8556ec211caa59ed40777b57eada77 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/22.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/22.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/22.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/22.exercises/solution.json"
index b09a3a9e3f2ae8653ae3da0654c28292d93c4236..61f22c7f773d222bc5ff94b20a2ac152047df658 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/22.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/22.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3592b4ef75784657938f540c1b5fadc9",
-  "keywords": "位运算,数学,回溯"
+  "keywords": "位运算,数学,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/23.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/23.exercises/config.json"
index 9310a9f7661c56f30ac7d7fc0863b013482015a2..8ff4e084ed0dd8b68d1b03472fc7357113dccd5a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/23.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/23.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/23.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/23.exercises/solution.json"
index 8848ab9625ced98406d7550d79c14837543a8635..b9c4b2ecab8de3ebaaba87a51ef8512fe6151fb7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/23.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/23.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1ad31701c625447eb34e16636233d8c5",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/24.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/24.exercises/config.json"
index 93716d158056badaccc2c81efdcbc5acbb46b179..5ed5272698605ecbe7d7365e060c02858c602e49 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/24.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/24.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/24.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/24.exercises/solution.json"
index 234d6f53d5f27f4f718e195fa2371cebcaecbfd2..0ac72a2894bd286c4689807c9507198837c8d70f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/24.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/24.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d88d2666c123412ebb2ee25570fd1c99",
-  "keywords": "位运算,数组,回溯"
+  "keywords": "位运算,数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/25.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/25.exercises/config.json"
index 9cc1b782edae7fcafa1c1d2aa350a7fb02be60c7..f59698777568737b250ba925c238afd4a6d73fdd 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/25.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/25.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/25.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/25.exercises/solution.json"
index bbb2324fad341d4b8fbf0613715d52be1ba94135..83160bde53093b5a7a983dff4f7e93d92c8b023a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/25.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/25.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "8232cb862b314d8690c5c5c7f315f1a7",
-  "keywords": "栈,字符串"
+  "keywords": "栈,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/26.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/26.exercises/config.json"
index 50d4eee4f3b3e510ec7776f97d3548869b6a2b3e..eae15cf5a1ece79085da5ed502c8cbd0ae470a2e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/26.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/26.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/26.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/26.exercises/solution.json"
index 97e0dc1bb80e88083961ab9ad3739a545e3829dd..cf5a5f68db28be67a25000094edba5fe20a39809 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/26.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/26.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5f1220332ae647a8baa4dac2d224246d",
-  "keywords": "递归,链表,数学"
+  "keywords": "递归,链表,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/27.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/27.exercises/config.json"
index dc597882e1c976470e2da2fd2c9fb5e6ac79640e..8bc6e8d09db929412738e9cac420acceefec52f2 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/27.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/27.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/27.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/27.exercises/solution.json"
index f9f40e313ef6eda848a32f1dce755b65d50aa2b7..241c0a045fa40da8f9a889f9e5befc44eb9f234c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/27.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/27.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "fcc35be3fee74a98956c3c13721ce600",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/28.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/28.exercises/config.json"
index b24c020b1f1fb7ad0f611307ad23c8f4a7753ce5..4fc70ba1d3c3857f530f7cbdb944280a0cd7fc52 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/28.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/28.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/28.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/28.exercises/solution.json"
index 8b5f3480cda8322e9bef7662cc9d843cdfecdc67..f4adbcaf4a756fb1448b5bd0a3ee5e0992314f2f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/28.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/28.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "03052a5d4420480f8193ce6f608fc9ff",
-  "keywords": "哈希表,数学,字符串"
+  "keywords": "哈希表,数学,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/29.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/29.exercises/config.json"
index 3136931fd9400b9a92c0816b04aaba9829eb142a..2d13d9840d9591b624ff11a78f136c65991f0ab7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/29.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/29.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/29.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/29.exercises/solution.json"
index 583b1fa95058c42547dc283fcd19d886d9233b1c..daf829e6115610ab10e4bcc69a465e05d585f903 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/29.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/29.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "02c66ed919a64658b723d5e7e8928b0e",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/3.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/3.exercises/config.json"
index f5eb45198d27173fe8bac8f6be751608a7f59d6d..19bd0080cac66169a6175eb83f7c52143d888fbd 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/3.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/3.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/3.exercises/solution.json"
index 9e767396d2ca9e50f5a367855ed80cf48f382109..f80eaeb43e94c240e9fcfebacae8d9f3aa3e2377 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/3.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "l986493387",
   "source": "solution.md",
   "exercise_id": "441c30924add4c18b110cca521fa7736",
-  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编"
+  "keywords": "算法高阶,数论算法,素数的测试,算法问题选编",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/30.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/30.exercises/config.json"
index 4d32af495116de5ab8755a05d49603f34bdca894..9a04663eb5097be76b74300682e6f7d028e15cf0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/30.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/30.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/30.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/30.exercises/solution.json"
index 3595468d060b8f93e4d9f041041e9b2eceebe0e2..2decd0f997cf37c5960f1c83d1f5f754212f07ac 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/30.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/30.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3811b4bc0ee248018c22605381ba608c",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/31.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/31.exercises/config.json"
index 07e9b3669031016c9e8560fc4f530042b3aa85aa..b1cef7709dab29e175e961dd6ea48069951cd3a5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/31.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/31.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/31.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/31.exercises/solution.json"
index 440eea775bca6cd564e3b9330e2d34ca51a87d1a..58f46d9401aca857262485471a02e830e0069ac6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/31.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/31.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "be7a8c28b2b44247a2957dda4523fadb",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/32.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/32.exercises/config.json"
index b2ebf347d699b837a827b35febb2e42657bfbaf1..3b779fd7139c924acc99b6859f2a738a9177a60a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/32.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/32.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/32.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/32.exercises/solution.json"
index c12d2744ac8fefb6b4c2d40cd050d25cb8d17783..3eb6507c3b033b4c2e5170a4b54533127c81b0f6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/32.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/32.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "04eb6e04293b450d8a2149cd4b65c1a0",
-  "keywords": "位运算,数学"
+  "keywords": "位运算,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/33.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/33.exercises/config.json"
index 0d4331341037855c5e43643f55396f28e9726e8e..dc53e05f098a230bebdd12446d0cda532a0613cd 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/33.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/33.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/33.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/33.exercises/solution.json"
index 4e7332ca89436baca044719b61413b40f9a766f4..3df29d098eb7eb45ff3ec9c33ee920f0efd0c609 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/33.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/33.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "04b27688798f49a8b07f36892f6e1b6d",
-  "keywords": "数组,矩阵,模拟"
+  "keywords": "数组,矩阵,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/34.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/34.exercises/config.json"
index a1906001b60e14e8cf7a4e880c6cbcc55ccfc753..7899047da82d3d504eed0f65da88794d746c07dd 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/34.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/34.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/34.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/34.exercises/solution.json"
index 7aa9103627b762561abdaaefa25061f7a69248b4..cec6f95323c34b714a5fd12bcf9884f18d019dde 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/34.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/34.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "91c6730282074a3ba8f208b7c7574dda",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/35.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/35.exercises/config.json"
index b75c88f9f0ccbc889ab7e1f13603b2c29bf8a21d..fff0e3e1d6eddef3ec427338b7afb01ed31f0474 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/35.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/35.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/35.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/35.exercises/solution.json"
index c298af44656bab7425a99f668f39eec16d0c36fa..8be17c36e71d335fd1497e9fdab37a46d4ac9dee 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/35.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/35.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "09924b24ed5447ab879f4865eb20b515",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/36.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/36.exercises/config.json"
index 629faaf5f1ed96b98062adf84ae2d0985b01296c..14155e5135877257ecf01a7ad142ae7da008ba05 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/36.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/36.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/36.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/36.exercises/solution.json"
index a1d376f781a31be4875ec5d03a8dffc8b2ed75db..ac53bbfa57ef9d91c9ab8bc4d9ea96db2c4cd585 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/36.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/36.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "181b049b41c7428f88cbd0f1458c2482",
-  "keywords": "数组,二分查找,矩阵"
+  "keywords": "数组,二分查找,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/37.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/37.exercises/config.json"
index 5e7024bffa3104a08008ca47f378aaa55650098c..fd071e04e73ef2ba2ad36be8868a6b38976595ac 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/37.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/37.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/37.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/37.exercises/solution.json"
index a31baeccc9562bec7ac057d4f1d876e8b9dc6fe6..62b504741ab1527260c107e1b2e3beb41c885829 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/37.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/37.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "096ba255d3f74daca6719e44801429dd",
-  "keywords": "递归,数学"
+  "keywords": "递归,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/38.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/38.exercises/config.json"
index f0ffae90bcb28b68bcec742f53f610282efb3aa1..8782ce8a5b695c37f2b85ddbd4d61565e72134d8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/38.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/38.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/38.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/38.exercises/solution.json"
index c198a25e6b51830fbd83b09364ec956239d2fc06..ebd5b7028dff00ea391facccaa0a07c03e9a93e4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/38.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/38.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "35663731ec004bcb83bb0dddab7cec8e",
-  "keywords": "哈希表,字符串,排序"
+  "keywords": "哈希表,字符串,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/39.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/39.exercises/config.json"
index acd0cfe893fde8ca00181930875588c618b7aaf1..9589224a80f9b87898a9da9613556ba8681d7a00 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/39.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/39.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/39.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/39.exercises/solution.json"
index 8e1b2ce83233303fcc6a05aa0cc1c33eb2db73a2..cca9a4a44545a649db129ba4fb937b8fe10546ad 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/39.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/39.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "047e5bcd86cc49b6916e8736ab3dbcc3",
-  "keywords": "数组,哈希表,矩阵"
+  "keywords": "数组,哈希表,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/4.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/4.exercises/config.json"
index d3417f73c082ddee92d09a845805fc067b6e5a71..4966043bfba3a0346d1d4c79e8bd4f576b02801a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/4.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/4.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/4.exercises/solution.json"
index 218a93adfbbb726d4696de5598f05662c027537e..b4bb7e6caca1db87a8e9a4d6e4787095af0d81b1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/4.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "91477a6531ff44c0a056b7905db6b9f7",
-  "keywords": "算法"
+  "keywords": "算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/40.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/40.exercises/config.json"
index e3749516a8acf1b6f9ca1359ab1d2d018f3d089b..8c675967cda500dc9f769c915bd32c0034606274 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/40.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/40.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/40.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/40.exercises/solution.json"
index e60fbf35f54bc8390a389e54a4aa83c48ff9c5d8..8f7c0ed8dedab9444352a99bcd69e8d7c9f8b7ca 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/40.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/40.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "4294bb2752c44a4a89d523d5639101bf",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/41.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/41.exercises/config.json"
index a922810662ad1c5e0a1e7a756c8cdcc51bba8896..f20fbe4d067c4ebda5bc54a53df89d8a2f77cd21 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/41.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/41.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/41.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/41.exercises/solution.json"
index 701278d1e5eaa14bcedd9f34a206a33b03f69b6b..1d99da220662dd104a7d9cc5d456c3d45434c2b6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/41.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/41.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "eb6e56ffd9af41c89664397add922658",
-  "keywords": "贪心,数组,动态规划"
+  "keywords": "贪心,数组,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/42.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/42.exercises/config.json"
index f3f94168121cd58b7f9eaa62adb5a8caf962a01c..d70b326bf50be1a1426519d71245e1911a7f6e03 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/42.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/42.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/42.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/42.exercises/solution.json"
index f164085470836014c088e994c2870bb4fa82e2c3..576ae920e68c0103e21d1c3872ee80dbaba309b0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/42.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/42.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a016a78c17504575bda8bf1cdb6274b2",
-  "keywords": "链表"
+  "keywords": "链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/43.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/43.exercises/config.json"
index 402d06069e4dcfa654f3988c629ec435ab6c7921..f79d2a1bf9d948f381af16a62c397a3f973cb157 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/43.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/43.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/43.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/43.exercises/solution.json"
index 51371a309ecd4e785ba93f027afbd17d0e04e400..205a2023ae4270933ff37caee21cc1bbb0c8922c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/43.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/43.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "96ce3e837e5c4135b4375ce9e8b29754",
-  "keywords": "数组,动态规划,矩阵"
+  "keywords": "数组,动态规划,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/44.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/44.exercises/config.json"
index 69dda8ebf31224aaf68ad296a6c74fdc7762612d..f39c86ecd343c38c0ec4f264604f70e2378f56a6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/44.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/44.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/44.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/44.exercises/solution.json"
index 1a30215ca886809568bbe16c73f13a4e81eac90a..8f21776f9d543c399b52e55c6d889cd70c2c795d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/44.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/44.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a4a05fa8ae2043028026f1aeb8d31b26",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/45.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/45.exercises/config.json"
index 98cb3138f43a6119edd0dfef182451cc97a294d5..12bfcac4b1075e66d73648e831884e5fea61ca73 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/45.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/45.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/45.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/45.exercises/solution.json"
index f4a2bdbf342bf1cffacf1f8a673bb2d61127e51c..0f3299b4d8f699e2b9059108058c0aa983343729 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/45.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/45.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "264371637c0441b48907513cc8860a32",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/46.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/46.exercises/config.json"
index 42a26ba24df3a86c96c4bdeb8b7b8f38064e3fc8..505b1f3fb1f42751ed4c014fecad75ec3b755689 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/46.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/46.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/46.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/46.exercises/solution.json"
index 99b12b35b8c715670e33742bcbd863b9164ceaf1..785ebf6f4a6802e6de61dfcdfbdf95e8c212fb01 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/46.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/46.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3927c7b6932c47789bf5dce8b98e6f25",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/47.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/47.exercises/config.json"
index a60b453c2efae058f871728f7bedacf96e7ceb32..f41da801065894818ba3dd3f6d90da355fd883a3 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/47.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/47.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/47.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/47.exercises/solution.json"
index d5e4114bc1ff3334050bb5b5e22d5d70681c48bf..40021ec1fe395c80cb1720dd20cc1de4985dbd25 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/47.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/47.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e082f85c05944fadb19a3fa01a518afb",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/48.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/48.exercises/config.json"
index 819ba53af9dc95c34561b64e51edba5569d24188..a7a575694735816474412f5c94e0ce1f1f67980c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/48.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/48.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/48.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/48.exercises/solution.json"
index 58e5dd77161717dfbc430961965dcc078cf17c00..71094ea4e61ad1774a3d271a8b1d40c99735092d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/48.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/48.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e619fbd7e7ed4861a730cf2a2b434ded",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/49.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/49.exercises/config.json"
index e55999ff0434bef37dfc1839f9f3d210b3e6b430..96f50e9e24ffe3dd6b122aa8756dba932029b64f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/49.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/49.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/49.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/49.exercises/solution.json"
index f0f7a9d79304d0125bb76c90715f7a5153f294b3..a32a2d36794083b5a700dd6d95e33a8b4922e384 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/49.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/49.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7017d7f1a56842878210bfc80b093faa",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/5.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/5.exercises/config.json"
index db29a200a154e73c7110808680bee2adbb235eb1..d3f10587507fb0836c26e421fd7ae2735336546a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/5.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/5.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/5.exercises/solution.json"
index fb7013c50f4be1669cbba9b20e99cbea25f6b38f..5b0cb518cc694a1936bc5395c4cb3a3cf7330daf 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/5.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b156f0a0d59d4e3da115cc80043ef958",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/50.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/50.exercises/config.json"
index e778f06aa218c7f7be3f69f6aa4b3e9d54b7621b..9bc63a78266ddf9c88815b7adadd30c2196581fe 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/50.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/50.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/50.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/50.exercises/solution.json"
index f5fe5a22956ecac70ab6b2a305d26300daf8d61b..10024c39ded2e2a53332c86bc04835ef14c5a384 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/50.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/50.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "69fafd79ab244be48cf5e2d71def6ae6",
-  "keywords": "数组,排序"
+  "keywords": "数组,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/51.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/51.exercises/config.json"
index b7357fd62d442aa0b86ed4462f24110724d3dc6b..dbcab9ea2dbcb651e08b2cbf1aea0ef7fc107095 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/51.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/51.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/51.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/51.exercises/solution.json"
index f43f4f1065f14d971d6a777137965bcc7bec2fcf..8c4fb3bfe20758f822bd1749d245169b4d181e3d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/51.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/51.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7f235698f48c4268b1712d39303f1fef",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/52.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/52.exercises/config.json"
index 2f1228aa74d7b06a9ebcc1d451e6de29eebafb2c..43969457c4792866dc8ca07298974ced3f90ba35 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/52.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/52.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/52.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/52.exercises/solution.json"
index f439148b17d080529d1a42abcd9dcf6f019f6c45..38efb20edfab1e9317513c136aaa9d5fcbbfff71 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/52.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/52.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "f90adb739a29462880a0c6fdb1b6bd49",
-  "keywords": "数学,字符串,模拟"
+  "keywords": "数学,字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/53.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/53.exercises/config.json"
index 9b01c20adecc27a459c2957563f65e54923909f7..b09f8d9309e806c02822043c34cdcfa4a667eccc 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/53.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/53.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/53.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/53.exercises/solution.json"
index 85781b39bae91a12c225c4de7eed2b23af974fc2..5c7501230aa7cb0e9c06126c834a905afc40bce5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/53.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/53.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "865068ce13da4c65a64a67e89770cd65",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/54.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/54.exercises/config.json"
index 040999c91a72f5c2a092ef55d9b4ec7e48db3383..87ea3d56a1f1bc4b1d2ecd3c7684d1784c83e8c9 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/54.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/54.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/54.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/54.exercises/solution.json"
index b7ced515cb7d6bddf62486cd81ff4dee06deb3fa..67ed2f61c04f10c29a305bf7f4f3d00f4f94321b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/54.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/54.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a32132b49f1d40f7aa942262349aa4be",
-  "keywords": "贪心,数组,动态规划"
+  "keywords": "贪心,数组,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/55.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/55.exercises/config.json"
index 742d94562e0d1e5379ec8288615ff988109e5ef0..c239b305ff7070351567439fe05cf32090b5b015 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/55.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/55.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/55.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/55.exercises/solution.json"
index e71d042a6f3b7671e6216b36933e5c2e0f2da83e..beed2e84f5f1e4ff873919d5b7f26c3e7e31ad27 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/55.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/55.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "0080108f11a948a9b13c5fd11952b680",
-  "keywords": "数组,回溯,矩阵"
+  "keywords": "数组,回溯,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/56.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/56.exercises/config.json"
index d023abe4e62297799eba0018d03a2b334dcd8d7f..398356b27f770f82b5cd773760ae6906cbfd4682 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/56.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/56.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/56.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/56.exercises/solution.json"
index de13b3e32d46477d1545f8fa194311d313685d57..b1267830cf329b166f4ceacd0821e996b7744934 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/56.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/56.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7ba666264c0047b5b2d260b9887a86d1",
-  "keywords": "树,深度优先搜索,二叉搜索树,二叉树"
+  "keywords": "树,深度优先搜索,二叉搜索树,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/57.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/57.exercises/config.json"
index 558c722bc2b7a3eb781f9ade754985d80e5f7728..e076cf41729f7dce0e04a15a02406b0534722811 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/57.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/57.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/57.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/57.exercises/solution.json"
index 61f54397c6f523dfbea654d05d7d435fe67519e3..bdb2750934f118c6f774b0a99d9d12ac73b5cb67 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/57.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/57.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "8ce93ea1bbcc46d3802dac945e1bb600",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/58.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/58.exercises/config.json"
index 26d3a246112795dd318c79b7e3a2f8dc5aae8463..b74c9563f34d643bfca2259f88db6f70a31d3664 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/58.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/58.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/58.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/58.exercises/solution.json"
index f4a31eb8f1c12f8b60392a210219e1f2ca142853..22a7834bd6b24fbbab4aaa8d44f6ab1da615bdb1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/58.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/58.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1f3bdab9bd094d6e911da6bcb99cc804",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/59.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/59.exercises/config.json"
index ec9930c1a56bb1a8479d1bf8050f569daeba7586..1a4be99a424fd6200b7ed7e8195683deb053030e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/59.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/59.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/59.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/59.exercises/solution.json"
index ec3c584cedb5499fbf6ea7377a73a09ea56aaee2..84ddd6d64d428beeaaa59e1f598f9cccbe51d2e5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/59.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/59.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b7ff6789440e4fdabdd0841c6adb97e6",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/6.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/6.exercises/config.json"
index 1ff1a78a310077c75b9619c537a914e81ee086f6..dddadc6fdbdefa45e1a472d4da928398552bbdbf 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/6.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/6.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/6.exercises/solution.json"
index 541f9b83fda5a2f4252dbcff9d65320c4a473ad5..72cb053ed4bd8aafd2ed2adbff689cca2ead6c5f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/6.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "51c26bca89994c5ba6ce2432f84304ee",
-  "keywords": "树,深度优先搜索,二叉搜索树,二叉树"
+  "keywords": "树,深度优先搜索,二叉搜索树,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/60.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/60.exercises/config.json"
index fba107b382fea1db23cc7df7b02e0cd08ad70388..ac84cdca8d2d363612fef048c24f9ba20450bcc0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/60.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/60.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/60.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/60.exercises/solution.json"
index 97786ced66498c5e1672e82db0b58b35e01ecffb..02b2c6df55740f3823d47b12b8b547636d1f31dd 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/60.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/60.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b978d7fd3bbc475ca00fd3b34424ba02",
-  "keywords": "数组,矩阵,模拟"
+  "keywords": "数组,矩阵,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/61.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/61.exercises/config.json"
index 35e15254bef8d7ce1d3010ca8561bfedba454c45..faa289b534cefb61731519258d2b130d136dc152 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/61.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/61.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/61.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/61.exercises/solution.json"
index 63b38624d178a4fdef0a07aa4f5d64039545fca0..087abb32fe6e1b3b32a15542faeb9192a39b5d36 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/61.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/61.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "eb4ac806d99843129fee885ae9dcf5b0",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/62.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/62.exercises/config.json"
index 352c527f653bf91aeabd46e8630ec5eb86fa59f5..88bbe5360f7c212ed3846f2aff4d9830417c6912 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/62.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/62.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/62.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/62.exercises/solution.json"
index 32331ca25027e5856d1efe5b691951ddee49113c..6455a0735278ee99c55740809d0eb502b015c76a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/62.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/62.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cc85402dd5174c09af33e29f6f8909c4",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/63.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/63.exercises/config.json"
index 3ddbe3cef42dfb6e51ce4fed21a60f7c8f3e7bc7..877eb8ddb927a188ce05b957de5c11d1ffb0c269 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/63.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/63.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/63.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/63.exercises/solution.json"
index 5daf2e6826db06f08e8ba4860569937cd244f582..44ef0f4c4a2ee3b137e97ea2d4d9bf7a8535834d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/63.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/63.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9ce6c7c1b6dc41de8dad7206025b89ae",
-  "keywords": "数组,动态规划,矩阵"
+  "keywords": "数组,动态规划,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/64.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/64.exercises/config.json"
index 4f1b70b4ce1347eba24dacc0b6702a5f136334a2..ab6ab4c218e5764ed9d012bbe8da586b11dc56d4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/64.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/64.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/64.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/64.exercises/solution.json"
index a67ebd2325a0c4a8756572e382bf58b5ddab6a43..d458c096f96b6ab9b1e3ce98d10e247f7c267eaf 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/64.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/64.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "aced446ee0d3416997ee08d685f70cb0",
-  "keywords": "数组,哈希表,矩阵"
+  "keywords": "数组,哈希表,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/7.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/7.exercises/config.json"
index e35601350e07ec199f198f563c78bd0496b93604..57df16744af11a02c1603cc84423059d2c832c98 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/7.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/7.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/7.exercises/solution.json"
index 1f758cb8642b66753ae9db3996922fc460179186..f3a30f7e2589ff53a5b45a22a290663b22c2ca16 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/7.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "27b64952c3664c57937b088669d428f6",
-  "keywords": "位运算,数组,回溯"
+  "keywords": "位运算,数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/8.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/8.exercises/config.json"
index b9157d92652a290beaecd390f9c7f217e6181f0b..e3b79d001f28bba0c22130d36c16b70ad8b69c9f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/8.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/8.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/8.exercises/solution.json"
index d27105c1fac5d9d4c425949db824b88ee35494c0..9d52bd12d94cb0c58664873bb6a4b4cd2e54abe7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/8.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "0d48d2626c8148519dfce95b56830925",
-  "keywords": "数学,动态规划,组合数学"
+  "keywords": "数学,动态规划,组合数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/9.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/9.exercises/config.json"
index a5cc7081d04a7bba4c4adf0186e40cbbb1ec826e..c6c356bd1004aea89d3b286ddff1e4b6d5aa536f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/9.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/9.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/9.exercises/solution.json"
index 1278a9f0ad4dda4e3c705c60024cf99f2c02b176..581ad5b020c9be5b061f522ddcc5b8e21250f856 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/9.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "442117a940ec48eb9cd2269475ae2a1d",
-  "keywords": "哈希表,字符串,回溯"
+  "keywords": "哈希表,字符串,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/2.java/config.json" "b/data/2.dailycode\344\270\255\351\230\266/2.java/config.json"
index e65e7c1efdb62e3263b6db9ac3ca64f07698b3ea..338d2c963a3592e5c3812af7e90aef749cbaceab 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/2.java/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/2.java/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-5aeca2a930d442919a9fb9c5d2362e95",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/1.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/1.exercises/config.json"
index d5c9365e83ae4d6a7a807526c674d24fc2bd013f..d1a6ec9687ad4483ceb7cd301d3debd93db875e4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/1.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/1.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/1.exercises/solution.json"
index 2099961893c431d5dd8954d5791f62438c8f5440..2abec14fd77fc4027ac9586c44258b8c65653d15 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/1.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "u012541513",
   "source": "solution.md",
   "exercise_id": "8f2b8850ce1c42439df5b706d8c39256",
-  "keywords": "算法初阶,基础知识,算法基础,设计算法,分析分治算法"
+  "keywords": "算法初阶,基础知识,算法基础,设计算法,分析分治算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/10.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/10.exercises/config.json"
index 927fa17d90544f8a55d152bf61bab675c3945a9d..46c353bdc9ec8ebf2f1e7a91b771f55b00242bf0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/10.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/10.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/10.exercises/solution.json"
index c0169bb314b2298ea51164647fe8078eb9debe70..d6457d8f1a2b520df3abf2c857e15c22af650984 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/10.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "eb0e9b7945fe4582a83d7f8627ec98b0",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/11.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/11.exercises/config.json"
index df064642a8a3633f84d7c222bbe5bf06bbdd5b3a..b18f88574da009c0288dc02ba0f05f1e9631c769 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/11.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/11.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/11.exercises/solution.json"
index 4f18e3ffd69737989b291619ac6128b3682a05a3..45593ef6437c37512187441a13f75b1f6d111b12 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/11.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3c4e98aed0c84e57a07ff32e815e3029",
-  "keywords": "树,二叉搜索树,数学,动态规划,二叉树"
+  "keywords": "树,二叉搜索树,数学,动态规划,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/12.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/12.exercises/config.json"
index 1fa00a47205a9a3bbc10c4750a47f72409e62edd..54eb3740500cc44be504eeb786c5b4247ce60e9e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/12.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/12.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/12.exercises/solution.json"
index f7bf71abd1c27e98205725fed7cffc1a81362525..c8241669ae6958ce783466f2368189fa2c2c455d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/12.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e13e25e7e45440858e26bb2effaac800",
-  "keywords": "数组"
+  "keywords": "数组",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/13.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/13.exercises/config.json"
index 123edec1ab12e4a451a9e7fd4038cd481654db04..a49ec26f7d7c156973afdfc66d52a0eb5c8261f7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/13.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/13.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/13.exercises/solution.json"
index d3a61ea7f876440527cd53de17e9ecca1e726d52..2b0b0771fbfa24b7553e8341b44889213190307c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/13.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "37dad61aaba04eb3ac75b4d6b503d5b9",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/14.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/14.exercises/config.json"
index c771acfd7a1b3b0e802a53102d7be23d50898ffe..3ff8893bc0f2ecc2c121df7353d6970088d22f85 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/14.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/14.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/14.exercises/solution.json"
index 7f233f55a2fcd622bdbc7fbb2dac5181107017df..3ba80af2235cc6d12badce9137f7fdbf8b2238b7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/14.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cc5dccee574d40d1b46dba4b524fdca4",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/15.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/15.exercises/config.json"
index 274ebb22c25f3deb02945ac6004471b94619ff54..67d38c46d64c924b3b251a59c9b848c128d1b1ec 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/15.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/15.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/15.exercises/solution.json"
index 0aa35317b6f48e4cd0115d358bae2c59e96c27fa..74767b795e14cba06926eeeb2b03d857eb0ae4dd 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/15.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c7708cf22e8d42dd8ca2dd501b24bc2a",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/16.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/16.exercises/config.json"
index d0dab59ab5d4874461abd1caee0eda451454fce8..eecf2f1185e7198ded26578f9b2f2cfde7507685 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/16.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/16.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/16.exercises/solution.json"
index 58b08aff8797b35fea3d5ad8546718c082161ae0..69164bc3b60d1a959c3929ef6756ec39107358c9 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/16.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "076fa5cfeb7f4adca7fc812b5a58edc5",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/17.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/17.exercises/config.json"
index 38922e27e271cf19f5e11b21dfa7188661f42c88..83648f6900fffa4ce02b34f95c30a441b9f89378 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/17.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/17.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/17.exercises/solution.json"
index 7d8d9fb592be6b9e1201c79eca57f1ecaf9337c5..8d16c67d87f02d004ac571086e45f6830520c552 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/17.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c0471513553c477a823351c3c93b7b37",
-  "keywords": "字符串,动态规划,回溯"
+  "keywords": "字符串,动态规划,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/18.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/18.exercises/config.json"
index eb652e0a95ae5830e2242a700e80b7f3cffd1290..eed6d068042e8e67c8f15adb0a9e3aa7542d26b4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/18.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/18.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/18.exercises/solution.json"
index 5d2e987eeacc963046d42f3c67e6416003a8e18e..30250f676fe7aa6c23a61bbf095f298ea7d4cdcd 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/18.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c3f41a2455904f5592df1ff3aa5e3519",
-  "keywords": "数组,数学,矩阵"
+  "keywords": "数组,数学,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/19.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/19.exercises/config.json"
index 817e46cc4ca9796344c5bdafbb6c73fb99d92e1e..d73b0150c8a2ee9dccf5550cfaf348be99ce4719 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/19.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/19.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/19.exercises/solution.json"
index 587736f5b5fb9e5483084e7925ac57b22b1478d9..1455da42075eae27a4704a9a9c85dbf50771459e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/19.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b347b524c4bf4811a0a490945fdb324e",
-  "keywords": "贪心,数组,双指针"
+  "keywords": "贪心,数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/2.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/2.exercises/config.json"
index 281fe84962272e3183b4793efef299706cd10362..213a96044d5e9b55c68e3c454253e27075221659 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/2.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/2.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/2.exercises/solution.json"
index ee30f377058132def7e9547e2eb6abaa2eaf35cc..549c2f63aba43a93885879bed6f0db130a3e206b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/2.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_43971182",
   "source": "solution.md",
   "exercise_id": "226a3e3e1d564f45aeb6e475d269a13d",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/20.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/20.exercises/config.json"
index f265a2ee131e3ac1105ce1cbe4914f50c9c43c2c..755911f557e39db89d2082550837be5c82ac6bf9 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/20.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/20.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/20.exercises/solution.json"
index 124d5545f448cac0820db8b03ec447ebfc17d3bf..3670b2f0abbb516d58aeb90f366796524c7f269c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/20.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9f9ae60bd464481d9f430ae229754d44",
-  "keywords": "字符串,回溯"
+  "keywords": "字符串,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/21.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/21.exercises/config.json"
index 613c423a74c8ad792f7438ab50803d80237884c1..2a784daffa81266af08f038257b101258ff0f814 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/21.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/21.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/21.exercises/solution.json"
index dcd6c5c265f3d231aedeceb499307b3746e050fa..e4cf358eb8dbe61d13cdf45cfe807013f9e968e7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/21.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/21.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "0337596b175e45568b2ddc0a22d1e8e3",
-  "keywords": "位运算,数学,回溯"
+  "keywords": "位运算,数学,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/22.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/22.exercises/config.json"
index 8b7af1c720c5c5d773ac6fe6bb9d7a232c583703..05aff78e4b4ad4a3434c88a877e4ff0c55a0a226 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/22.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/22.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/22.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/22.exercises/solution.json"
index 23663618f026cdab3220d0ab9eb362ecda15d8c3..31a10ddb400ab0dfa95ac0ca0d28e98531640def 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/22.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/22.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9e9cc102f27d4b99b46a5563bff193f0",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/23.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/23.exercises/config.json"
index 571815cbf6a2cdc547a86f54c05a531455a1a82b..a703ba359c079b4f6eae535097b3cb2da65a82cf 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/23.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/23.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/23.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/23.exercises/solution.json"
index 8dbcfd94f1c084da381f64a12dad0ab82a3e2489..413328f5e4975de9e113a8ecd512f0101adc06ed 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/23.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/23.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2e066ff930634af69f5fbfabeb2432da",
-  "keywords": "位运算,数组,回溯"
+  "keywords": "位运算,数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/24.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/24.exercises/config.json"
index cb09d26b7343a7f8428ed5c0436b23b6dcac8ce5..4f29bc944dd3e7484cb752cf6e12bceb7e0aa191 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/24.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/24.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/24.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/24.exercises/solution.json"
index b509fd942d1a5a6d1c1c0e4f50928073672402d9..e2360d1dee26ade208efb8f66a32f9244c867673 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/24.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/24.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "8d369d50d5824166a6dfafcf90a58892",
-  "keywords": "栈,字符串"
+  "keywords": "栈,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/25.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/25.exercises/config.json"
index 5f182dd04941bdd910601e7082c9b4fb3eaad643..eda88cca3b9b964bf1901c806deeecc018e85a64 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/25.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/25.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/25.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/25.exercises/solution.json"
index de8229e6d87046904e66d6da18d2563bbcd1cff8..ef46d87d8d509d5ae03804e2a05dcedc91939135 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/25.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/25.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "452811b643cd4c9f8f98931e543a0050",
-  "keywords": "递归,链表,数学"
+  "keywords": "递归,链表,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/26.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/26.exercises/config.json"
index f088c1b1093ea0f97793efb5dfb828c2ea8827b1..086695f6c18b132076229d75fb52809ce26fe07c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/26.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/26.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/26.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/26.exercises/solution.json"
index a66dbb1b36d78f5dc81eb653fc5fcdcac73bb093..4d1a1cfb6c082ea434be949ad24c23e67801e6fa 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/26.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/26.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "4c70eba19b9e4343ac41d5eb062da79a",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/27.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/27.exercises/config.json"
index 5e8ae82e49c1b8c201597d9d78a4f627400b32c4..b504a3304cecaa193a31586e993541c806990389 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/27.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/27.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/27.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/27.exercises/solution.json"
index 56dd2160b6216ca6d56272478f037f8b4b07736e..f655fd1d8e1f72e0cdc644eafa10df57bb33822e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/27.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/27.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1a84c27cd01946f48fed4895199846d8",
-  "keywords": "哈希表,数学,字符串"
+  "keywords": "哈希表,数学,字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/28.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/28.exercises/config.json"
index d29074f2fe6dd7bfec26b3495b480e9f42a63fc0..cc3c0acf30297cdc483202b2ac8208ff9c429ada 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/28.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/28.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/28.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/28.exercises/solution.json"
index 5cef0112ada82b95c97cddc71275ead8d5706c13..7727f9e498b8d0269bf9b5d58375434cea494a51 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/28.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/28.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "6e91a9599b784a6887d11d64b628d446",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/29.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/29.exercises/config.json"
index c5636205ad7aa1a0bbd5ccbf3d8cf164ed6403c7..f14acba860795df2e43cb1be05459b04bcc266a6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/29.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/29.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/29.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/29.exercises/solution.json"
index bfd9c318b5c77b12f9177b2c16ecdf372c33d87a..dc98ecc958ac2ebf6ab28d2ab6faddcc58a228bc 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/29.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/29.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "258071360f4d49dda7bcf35265f11865",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/3.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/3.exercises/config.json"
index 4bd72eb22c6d1a82020c8533d2899459e46f2728..8e83f2c63768c9c33c762672ae1d64f99c6db426 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/3.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/3.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/3.exercises/solution.json"
index 6381579aa49a59f629731ad7fe189757e55bf9b5..7ac1781410ee2b7655cbcc747afba1de4d693b5b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/3.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45782673",
   "source": "solution.md",
   "exercise_id": "9f42a4ea1918468eb54d950bcfcb81aa",
-  "keywords": "数学,算法"
+  "keywords": "数学,算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/30.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/30.exercises/config.json"
index 58475c47e3cc378436c9f5980090ae02a069c5d0..cdad2c2d17a3ed476622bfaa7b16f1a1a0fd492b 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/30.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/30.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/30.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/30.exercises/solution.json"
index a4351cac1766e176720637dfe211d4b6aedc1a86..d749db3d25d815c043927fa65d177bbafdc9cb9a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/30.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/30.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "88def27bcaee46c4915df546be00d843",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/31.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/31.exercises/config.json"
index 469d9f74c49b47c80136448c55f65aad84b5bd89..42340eccf2493984c494474ad1e0631ed93ef989 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/31.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/31.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/31.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/31.exercises/solution.json"
index 139f2fc2ac22556db06a357736345bf0e9856130..4e48288a3cb99b70cb0cb0b2dab7e66ad9ab1ea0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/31.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/31.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a856468392d54174a9468867390a6497",
-  "keywords": "位运算,数学"
+  "keywords": "位运算,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/32.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/32.exercises/config.json"
index 6ec1ba99d05957f9e133d8a1220d4757fcb95cc8..6b4cda0b5f7350af2a7628a830bf2603e83f2a3e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/32.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/32.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/32.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/32.exercises/solution.json"
index 5364bdcc3dfc6b701e19642b18048415de83a3f9..f4840737678be5559abb55afd1d5037b039c8d49 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/32.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/32.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "283dc07c5cdf4aedb15f3ecfffcaa9eb",
-  "keywords": "数组,矩阵,模拟"
+  "keywords": "数组,矩阵,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/33.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/33.exercises/config.json"
index ca4ea33a47fb0afae7a5b31b5425306cfbe49723..dde22df85faa529ba0f0d11cac0bdab8563c7877 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/33.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/33.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/33.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/33.exercises/solution.json"
index 758c11a6499bf3b8962e7a0c655a05aeacb0dae0..d3d5809ee7ab200a30648c96809c0ffedc119e00 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/33.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/33.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "90285104c9554381b189cbea114cada2",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/34.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/34.exercises/config.json"
index 4a4a806c916b8b671acd92bf68fe42cffceccb15..04919889791ad31257ae476afc1ee4a8ad7bae93 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/34.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/34.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/34.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/34.exercises/solution.json"
index eb90b022579b8f1de28365957e212c2db2040cab..e53e05485b2ebb60711f1d0579ee3fdf7cb65e4a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/34.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/34.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "621940a959c64dc58077351c662c97b4",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/35.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/35.exercises/config.json"
index 8d8dd92271f7e5e08efa42fef22e8364effdb7f7..e8fb0411c2a6bfbf525b3e667a644450aee38004 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/35.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/35.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/35.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/35.exercises/solution.json"
index 10c39322bb41a188e3f720aa1e799d5c362ce727..c18f0fb319c741fa00ef371b305995f4a02477c6 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/35.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/35.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9e26f434eaf846cc9a66e332ab8ec58f",
-  "keywords": "数组,二分查找,矩阵"
+  "keywords": "数组,二分查找,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/36.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/36.exercises/config.json"
index 449ba3ec41a1054ca8e5d4298370981d14f30d05..94e52bbf7a2ffaeafa1508b9652801cf454a5371 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/36.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/36.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/36.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/36.exercises/solution.json"
index 4acb312a212e363a018243ee7f1edbd0a27c2e54..399da8919881373600546ddf9d296d9ca751805c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/36.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/36.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e81cc158a5d9484fa246307417ee9eeb",
-  "keywords": "递归,数学"
+  "keywords": "递归,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/37.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/37.exercises/config.json"
index a349d0df5493d49211e54d390afce361d894ca8d..6d6f376e00922608a34237562a4813622b2a2814 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/37.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/37.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/37.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/37.exercises/solution.json"
index be7742eb6abf7a560002a60594567511b2c8ffe2..9144595ae5df41646dde86b27a490f91d9ebedf1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/37.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/37.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "689d088dff924b3dba06a66fc6014101",
-  "keywords": "哈希表,字符串,排序"
+  "keywords": "哈希表,字符串,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/38.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/38.exercises/config.json"
index 780b8ad0b904ca17a827fba6de186f8e76c2ecf1..2c6fd0cfb1c688a686f4493cee4a2b65740f9f92 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/38.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/38.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/38.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/38.exercises/solution.json"
index 129793b343a5e4c8c6807378a5969917e2303c19..4ed0879daa3de7f6cb32117fdfbce0e972da8e20 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/38.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/38.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cf5287cf5a0b48f2bad71ab49b950532",
-  "keywords": "数组,哈希表,矩阵"
+  "keywords": "数组,哈希表,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/39.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/39.exercises/config.json"
index e96b403a827a7ac4f7c0d743226a46d9c8ebaa96..7dca37e50b44620bb824f3e5bc323b107a603959 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/39.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/39.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/39.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/39.exercises/solution.json"
index 9e5acd07d8610ad4694fd6ac609dc2bdd31bbd49..cabfe8c47431501f64a915eb4fd8b8e0dab73eed 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/39.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/39.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "5c3fc04cab7e4336b1d589b82d2ddf89",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/4.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/4.exercises/config.json"
index 1547346e02fa0030daa329e4779a77ca36bac2f8..b32225dd49caebcf24c2becc3db297c9ae9a1129 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/4.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/4.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/4.exercises/solution.json"
index 011466629b24005c53da4aff99779b9455ab56e7..58074aefc1282379cc7086545ee451159303ae0c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/4.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "houxp666",
   "source": "solution.md",
   "exercise_id": "4077f0dced7149508a7104c84c7eb01d",
-  "keywords": "散列表,散列表,算法中阶,数据结构"
+  "keywords": "散列表,散列表,算法中阶,数据结构",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/40.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/40.exercises/config.json"
index 13fac7be79106dec593dd28ea4350e4a789edde9..6c31cd8b66e4db732bd1b4a0606d61e5de0b21e4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/40.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/40.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/40.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/40.exercises/solution.json"
index 2e4436212a63b4b929958bd49f633bb877ed1ddc..6afdeeee91140feaea91c9c97ce7124c28a4ab95 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/40.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/40.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "84136d3c63b047249adb53ffcfd69532",
-  "keywords": "贪心,数组,动态规划"
+  "keywords": "贪心,数组,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/41.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/41.exercises/config.json"
index d809b96111511e31c39fff536d7eab00f1f2745a..4147c9922081b5b8a3d8829acf9627335759f352 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/41.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/41.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/41.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/41.exercises/solution.json"
index 714aa7ab6e42fafcce17f43384d6e272205b328a..0aad040b31e895fc701549ebe7bab1ee485f7770 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/41.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/41.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "f6e4d27cc81543159b689e2dc81085c9",
-  "keywords": "链表"
+  "keywords": "链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/42.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/42.exercises/config.json"
index e5481d96ab2064447f860b322582807705ffb4f8..a4d0821f28998f2157d05a7e5fc5bf640af6691a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/42.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/42.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/42.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/42.exercises/solution.json"
index 8e5b503737485014f4980eaa20a9595b488de317..74b805421b82dc706dc7de3bfa6ca5f07392d7b3 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/42.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/42.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "62b3b65b60fc494283c75e4fdecd2221",
-  "keywords": "数组,动态规划,矩阵"
+  "keywords": "数组,动态规划,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/43.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/43.exercises/config.json"
index 2ddf2f089e232214830ecd048473e6fddcb3e925..955881e02994f878ee3f0875f037d8b8fd23b522 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/43.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/43.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/43.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/43.exercises/solution.json"
index db4b49a574dab45f4dd29ef7229b8588db83e6a4..985744420abb08dacaa432ae8f96cbc83fe0bf6c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/43.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/43.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7f3fdaec1a3d4246b86533764656de26",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/44.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/44.exercises/config.json"
index 9b7d0a8e93a15fc495a7c738dc7c151791f423af..687eee4c932baffd11f0c755a5cdd5694fec325c 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/44.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/44.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/44.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/44.exercises/solution.json"
index 8f5322b92d0ab835111a9c83c74fdabd9129f852..96ddd8e74d0775f9e5531d9a9d34b99c29da2c17 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/44.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/44.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "73cb72426b5641b3b80c60652041a104",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/45.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/45.exercises/config.json"
index c256007652c2192d4c5764d8e51cbae13488b24a..e993857942568d6609a3a924bafb37aeec378c58 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/45.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/45.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/45.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/45.exercises/solution.json"
index c91f13a5143539ca88b5e08c1180dd5988acd14e..14340fa5cf7f4099f3ca32ddb17b9cc5d1234163 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/45.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/45.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "bc7e5006bbc347a29f5815727ab2cc26",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/46.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/46.exercises/config.json"
index 7f3888fbcf50cb65680e458a176edaff8a69cb1b..6ef33c5980eb5c22412ae7ecbe7a8396ff82d5b0 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/46.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/46.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/46.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/46.exercises/solution.json"
index c16203f4712b0bd04eeea83371706795354c819c..ae07c2aa86cb88f41a3465da74da3e6a6a3d703a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/46.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/46.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "4296c87b043a4c909a7910782aa5901c",
-  "keywords": "数组,二分查找"
+  "keywords": "数组,二分查找",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/47.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/47.exercises/config.json"
index 8a014772beacc7f23dc2723e8ccebbe8b1bf8112..0692a0f3a7a5057eec98fe59e4d9608902f6cea2 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/47.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/47.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/47.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/47.exercises/solution.json"
index 5fc91f255432c4b56459708d0d5a44a4fc8183d0..59e3dd4825cc3bc9159402dbce0246d8f98b1cef 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/47.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/47.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "61473748d3584d9da80dc81685349d2f",
-  "keywords": "数组,双指针"
+  "keywords": "数组,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/48.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/48.exercises/config.json"
index 7813fe706ede218ca8516f2bba2dc878d43055bc..cfb5de68787090a13dec8fe458124b388fef39f9 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/48.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/48.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/48.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/48.exercises/solution.json"
index 832387963c93b91872daef3fe589b75fcc2436f8..3a4216598598528378c51b6bb3ff292558c1bfeb 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/48.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/48.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "ba9fc2ac3cc240ed95c9d30953f8166f",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/49.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/49.exercises/config.json"
index f3628ca7be8adc2926cffe0f3cd041fa468688ee..c73ddb3a9c656b6e51e46c2aa9a2fff1fe1d5d47 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/49.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/49.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/49.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/49.exercises/solution.json"
index 8aa86843834417f4de818036d8549bac7f919dbb..6542d708800041361c8f761a8618a6ff65f8236f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/49.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/49.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "4091d8bdf76f4dde9c2d6aacf65da8cd",
-  "keywords": "数组,排序"
+  "keywords": "数组,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/5.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/5.exercises/config.json"
index 75a929db569db8c1817589996eaf2cf047875957..6616491ba68a3b05790c579cf1940ea41ca858d1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/5.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/5.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/5.exercises/solution.json"
index 9e404c53ccca4dff5ef013100ffd6601ac4ac8df..edf5ba1f7318d24e5cce1bf9af7bbecc7cdcef1e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/5.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "03503e53da684a1ea3ce91190a6fa91a",
-  "keywords": "树,深度优先搜索,二叉搜索树,二叉树"
+  "keywords": "树,深度优先搜索,二叉搜索树,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/50.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/50.exercises/config.json"
index e047d65a7096002c2aeb3265a9e2a12ba74a9ea0..581d80a6652bd253932853d94c4cee2ca833d8f9 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/50.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/50.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/50.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/50.exercises/solution.json"
index beab3afb867a1501ee2b7dea1eee5128c6f35eb1..464cd316b82f8a6ebe717fda335600feda9ff388 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/50.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/50.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "144800badeea4a3a9a99aad37ba59a6c",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/51.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/51.exercises/config.json"
index d5e6fe00ec244ebf7d6064fa6481ddaac08e82fc..7d72b2ffd554ee41886ec62eb8737e81433303fa 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/51.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/51.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/51.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/51.exercises/solution.json"
index f5ceaa300dedcc00f1bce14195dff7862f1fa160..1324a8781edd896f8a4d0342ab4fd0b7a315be92 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/51.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/51.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e0fdd6ed18ff4fb1923977e49edb897e",
-  "keywords": "数学,字符串,模拟"
+  "keywords": "数学,字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/52.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/52.exercises/config.json"
index 4a0f715f19fa1c626d0e1ad0f674fbd86d505d4f..9dd8864295ea8e6c6114710af7df61377c526772 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/52.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/52.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/52.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/52.exercises/solution.json"
index 2b3f9998599871c6cda8a5c6068830816bcada9a..b64a056f9f13fac5eaede8d3f393ac8945e76438 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/52.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/52.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "437cd0cbaa864a4b8508cee52bf793cb",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/53.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/53.exercises/config.json"
index 1e450e00773ecb1ebdf4c723ae0843756b2ec119..2153d811a8554a83e558ad128152b9c6b9bb6b15 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/53.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/53.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/53.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/53.exercises/solution.json"
index 4786e099cead80ec614ac422aa8d9c1b6456be49..4b21f7cc6404a238f448e9d53c56c0c57cf79884 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/53.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/53.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2a0c9ca788f9488d8bd946dc1a1e3795",
-  "keywords": "贪心,数组,动态规划"
+  "keywords": "贪心,数组,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/54.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/54.exercises/config.json"
index 1a1d3b4dbbb5827297d59cf4a8ece0488e557fb2..6310fccb50605f53adb2f1a64dda7d511939c6a9 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/54.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/54.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/54.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/54.exercises/solution.json"
index 09044218a7df40bcc172b491c02eaa2ed22110f0..6d266672614b4b93008281e1ea03792744c1a840 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/54.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/54.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1f0946dd838b405484813e7849fb7325",
-  "keywords": "数组,回溯,矩阵"
+  "keywords": "数组,回溯,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/55.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/55.exercises/config.json"
index 512da4b1365e2476e7792c8c1a5049d9e4be436d..fc5c908c26541519a7d5e9b7e86f2f6c56c7df8d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/55.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/55.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/55.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/55.exercises/solution.json"
index 9217d2420f540983fba8ea445387373f5e988f70..f8f398fa82cc4dcb2007e673d11d084d539eda7e 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/55.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/55.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2733703c7dd4468e999179f0bfa8be0b",
-  "keywords": "树,深度优先搜索,二叉搜索树,二叉树"
+  "keywords": "树,深度优先搜索,二叉搜索树,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/56.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/56.exercises/config.json"
index 3bc289f7e028575006bbd97e9f5b1fedc38836d2..fecd743ac6964f651b4c7186944e00e8baf1c5a7 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/56.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/56.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/56.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/56.exercises/solution.json"
index 0979eba5c93c62a24c7ec482ed2e3d76313a8833..0919fab80e9671e8e2e5c40f5d18fb552025de04 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/56.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/56.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "fb80bffeb84e4af98e68afa1b7bfe0e4",
-  "keywords": "链表,双指针"
+  "keywords": "链表,双指针",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/57.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/57.exercises/config.json"
index 78f010ea30a4f1686ea7d206c728d1dfa462d704..ec810dbd0f2a7ccb7e9baa113b7dda5c2bc212c1 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/57.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/57.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/57.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/57.exercises/solution.json"
index 21997f9e76218eefcf1366d8adaa90ac26f4bf6a..7122de13ff1709ed9fce24c7eec2acb4b9a44452 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/57.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/57.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "231f8c7a519643f287013f6b88005276",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/58.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/58.exercises/config.json"
index 8f100b84335c289059fb0a856886a8ed0c7af516..24e99770d5d56127f777203c439d6e95f5f789ba 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/58.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/58.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/58.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/58.exercises/solution.json"
index 173f0d3bd3878711eff21d6a67599742ebf1ca46..307bf781065f5429c220daa0e594bed49f5c0f74 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/58.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/58.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e3ee6d55eb8c45bc84201e59c85c5a01",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/59.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/59.exercises/config.json"
index 2610ae70beeb36a048d0aac09d44b8fb1d1d9050..a108411984bf9113abc849727786f37aa593f4b2 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/59.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/59.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/59.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/59.exercises/solution.json"
index 8e42ed57d95731a2fe11ab680b6c7b40290d3265..6a2141936510aee2e4a47453c65128a4f2bc7bed 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/59.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/59.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b29c970537ca4755b87b125bea842657",
-  "keywords": "数组,矩阵,模拟"
+  "keywords": "数组,矩阵,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/6.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/6.exercises/config.json"
index 4d4d24231764fee15c1c13fb9e795953b8f220d3..f88359d5e77d31742f756ff6091cfc8f586d74fa 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/6.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/6.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/6.exercises/solution.json"
index dfcf3d44d6b0ac9ad19114fe439e23f4cac6d36b..5c302c186aac90b15b1ca5cf89ea441da86975b4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/6.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "391c144d469846e0be425191669a4f33",
-  "keywords": "位运算,数组,回溯"
+  "keywords": "位运算,数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/60.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/60.exercises/config.json"
index e3c11b94618d5ed7fe7a50724416237b70a59fa9..1d2f4f89893d76126df491ec63b7ca1efc64d49d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/60.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/60.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/60.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/60.exercises/solution.json"
index 73ad335435efd234c7e1f26986ec73af5dc56d3a..7d582d1f8c22bc7772a71270800663298b78f1a4 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/60.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/60.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1adcc2813fb04141b5bc11a3f7dc88f0",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/61.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/61.exercises/config.json"
index 839641cdc208f0431dd5950f614b462a94acf0bb..b429205bd1ece3467efcf30805e09825c88127ae 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/61.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/61.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/61.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/61.exercises/solution.json"
index 46ef4105c54a0885a13a8fb03a2f30735f5e91a6..8d4f9c15e55f0b3977c10fb044d07cdb02db78d5 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/61.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/61.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "02ab71216bfe43cb8027c1e3d19f26b7",
-  "keywords": "数组,双指针,排序"
+  "keywords": "数组,双指针,排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/62.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/62.exercises/config.json"
index efb11911f69bd4203f3374d16a802b00f5058f86..985d8aabb80cfbcfaeca20457ee1a81f2d781b16 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/62.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/62.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/62.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/62.exercises/solution.json"
index 47d461a72124403739d81a82b4e61ec7b92cc47d..592afea2d65eff7c8f9fa5cc1be14a7a231b8457 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/62.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/62.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "849c5599454d40f98d785961bd69d368",
-  "keywords": "数组,动态规划,矩阵"
+  "keywords": "数组,动态规划,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/63.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/63.exercises/config.json"
index 62a56437e0cc2375936a099d2dce0e0d7c1ec8f4..90478c36f77dc118e2c09cdba12a69738afd6c31 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/63.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/63.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/63.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/63.exercises/solution.json"
index f531c9db6a20143c573cfbbf39e4c06f36c5e01b..0c415daca8a5303c39f7fd2db9bccf0d07f9b10f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/63.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/63.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "70d2aed25c32405c8e1dd08ea627a93c",
-  "keywords": "数组,哈希表,矩阵"
+  "keywords": "数组,哈希表,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/7.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/7.exercises/config.json"
index 61b34deaa985caf87b66cab995ba77ea76f2ac3a..e834bb8ff1fad8d6a13c0f94ec7cd32718c65956 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/7.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/7.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/7.exercises/solution.json"
index bbd73651b56ce13dbc4c5a942dc4e1f234b8a1b3..b8b522f35235fb1d67f7457d9fa8f794d626a96a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/7.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "31cbe7a951d24234b431f5e1985ed2ca",
-  "keywords": "数学,动态规划,组合数学"
+  "keywords": "数学,动态规划,组合数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/8.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/8.exercises/config.json"
index 624c941b59114b73522a74955fe3fe7a8c0192ed..aefd4dd84643674c26a96b1b383c38dda9f01a6a 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/8.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/8.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/8.exercises/solution.json"
index dcf16e705e56e6ec6c20dab902e70202b3d3991b..fc29da1dd0bca0d70c970f7fea8d66024ccbd119 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/8.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "02e1c1c9c9a54a26ba43bc933e73b77f",
-  "keywords": "哈希表,字符串,回溯"
+  "keywords": "哈希表,字符串,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/9.exercises/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/9.exercises/config.json"
index 4ec8901f5bce188771a08a8a0bdd06a6e80b0ac0..ddfe5a570e470ad137b233fbe2fbea92aabaab7d 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/9.exercises/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/9.exercises/solution.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/9.exercises/solution.json"
index d7914aeadb1fbd786a1a0e8fa8095e47e5822a3b..1ce1516fb495eec5faed7cfe4b30ef6bd22bffa2 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/9.exercises/solution.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "55102e8ea1ca4b7abadbc1595fcef085",
-  "keywords": "树,二叉搜索树,动态规划,回溯,二叉树"
+  "keywords": "树,二叉搜索树,动态规划,回溯,二叉树",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/3.python/config.json" "b/data/2.dailycode\344\270\255\351\230\266/3.python/config.json"
index 7bac94f1817eacaffb418b1b97a33ddf482f79a2..7f9e2ff63df2da8f8d0b3ce6765795211851f1f8 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/3.python/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/3.python/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-6adb56f72172439c9d712de16b8d504c",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/2.dailycode\344\270\255\351\230\266/config.json" "b/data/2.dailycode\344\270\255\351\230\266/config.json"
index 4f6a3ab1312ee3ee1d2784711c520fad06469728..ff2bd5b33553311b7b3ab418cf836621d6467b1f 100644
--- "a/data/2.dailycode\344\270\255\351\230\266/config.json"
+++ "b/data/2.dailycode\344\270\255\351\230\266/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-871ddb4f4fd24afa9e90b909acaa1c20",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/1.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/1.exercises/config.json"
index 28135371bf0014838500ef20099deed440f17ad2..a7ef2764c2d11bb72f020da11e84b3fb49cbf186 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/1.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/1.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/1.exercises/solution.json"
index 7349f177958a7e0372813a435a34eab1cd2f55e4..a1c61b532c2b1f484722bcf38185fd7fe8ab7495 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/1.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "stm32w",
   "source": "solution.md",
   "exercise_id": "2dd2a3c6c5ca42c38a57aab0e56eb758",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/10.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/10.exercises/config.json"
index deee6d3663a5ed6b8a31a0a17ae72b20ead213ee..153121a601e75a3a2d998edafb3b8454a559ba83 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/10.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/10.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/10.exercises/solution.json"
index affad7e0219e1b5deb1e847af234555140eb13c3..bc13db1d4d1efd776122d7fee4d5a916a7ca3a95 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/10.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_44543883",
   "source": "solution.md",
   "exercise_id": "c20537f045d74047860cc2e1d6ea15a1",
-  "keywords": "算法中阶,动态规划,动态规划原理,高级设计和分析技术"
+  "keywords": "算法中阶,动态规划,动态规划原理,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/11.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/11.exercises/config.json"
index c381fd29359bf98765b73decd36d376d0378f04a..cc05bd8752e42ba467e783720e1a96bce595567e 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/11.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/11.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/11.exercises/solution.json"
index 6614bdba9bf7e559cef2ce1f974f8d18f66f09c8..617710cdb8eac44ada73a13498ea18fb8c158bc1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/11.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7dadcc99599b4f8293d1032931871912",
-  "keywords": "算法初阶,基础知识,分治策略,最大子数组问题"
+  "keywords": "算法初阶,基础知识,分治策略,最大子数组问题",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/12.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/12.exercises/config.json"
index a1985c53743e1128bf489cec59a2638c4b4f2f2c..9f85af5324bd93d5fdc10fafe394814a048701a2 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/12.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/12.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/12.exercises/solution.json"
index 2335b3c26e5013fbc40f85dfc20f1325df8e1bfd..40ca064f54295f70e53e2b547e0f02157b6decf9 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/12.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45794342",
   "source": "solution.md",
   "exercise_id": "204d5999cb8e4cdc81dbedfabd98fc40",
-  "keywords": "算法初阶,快速排序,快速排序分析,期望运行时间,排序和顺序统计量"
+  "keywords": "算法初阶,快速排序,快速排序分析,期望运行时间,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/13.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/13.exercises/config.json"
index 155db52d2fe15d552b889f8a71a7993bf0d72de2..d0d195b61fefbb2c763bae9009c711bbf6a147ea 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/13.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/13.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/13.exercises/solution.json"
index 4e6a8f521288d997526f1a6f1dd97c5da0cff02e..abfeeeb6edd6e5ef7d3c07bd9c03cb8810729424 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/13.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45807915",
   "source": "solution.md",
   "exercise_id": "006fd652d9f644dd865b45b8571e9c8d",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/14.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/14.exercises/config.json"
index 6f09e8ba8c1896ef7fe5732cff2685decd6fc813..9d2ff82291c1b10b040031da6693ecf048b168a5 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/14.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/14.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/14.exercises/solution.json"
index caeea2f0484c17ad422637c307d7fc227d6cd8da..0f69be892a30dc0921ee4b497df0d6523e2380f1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/14.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_45688799",
   "source": "solution.md",
   "exercise_id": "e73bfd9784bc4eb8ae7118bac4855223",
-  "keywords": "算法中阶,贪心算法,活动选择问题,高级设计和分析技术"
+  "keywords": "算法中阶,贪心算法,活动选择问题,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/15.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/15.exercises/config.json"
index d978fa8b66f9e9b00c5b7d23fc916c9aa6dc7712..076e5376a711f889c5262863366627eff81b81d6 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/15.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/15.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/15.exercises/solution.json"
index 9dada83619dab4a3a33b7e3fa6194c0900d4cc47..a982b0b5b7ead3fc38b2942ae2d765f3279db298 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/15.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "shanli0681",
   "source": "solution.md",
   "exercise_id": "c7da4e1c24674f1592dc1527d6b5bbde",
-  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成"
+  "keywords": "图算法,算法高阶,最小生成树,最小生成树的形成",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/16.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/16.exercises/config.json"
index e0c2d87608ab22720f4b391d7f69774d50e5b29e..855e445a15c81842ceba58d101dfb56d8f25fd1a 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/16.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/16.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/16.exercises/solution.json"
index 53656f74de9707aefd2fc08cbaa3f21c2eead150..01317ade9c1ba995ec05996433907c4f75140dd2 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/16.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_26805615",
   "source": "solution.md",
   "exercise_id": "40c0a8df96934a80a8122884d7bfb6a3",
-  "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术"
+  "keywords": "动态表,表扩张,算法中阶,摊还分析,高级设计和分析技术",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/17.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/17.exercises/config.json"
index 2ebc18ffa45677d83b831d7b401f7719071c25a6..4db6c5bd0f20854c91678cdaddd63b235e3c8d12 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/17.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/17.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/17.exercises/solution.json"
index fbef70edf66e4da14fcd756dff06594f97319f71..3334c446b113bd206ffaf786b9129b16c809c108 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/17.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32332887",
   "source": "solution.md",
   "exercise_id": "9fc1fa0c4a6941a5af8c58f8a17072b6",
-  "keywords": "图算法,算法高阶,图的表示,基本的图算法"
+  "keywords": "图算法,算法高阶,图的表示,基本的图算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/18.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/18.exercises/config.json"
index 8c159a2ba0e0c233cda41f5def426ffc48f8cbd1..6a784f75ff74473282fe996a4e9daabd8e094d4a 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/18.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/18.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/18.exercises/solution.json"
index 2902a7341b6b1b4fb870c3ade8d07b0f023bb81d..118a00d1f7164be2d94d34eb47ec540c43374cea 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/18.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_45811118",
   "source": "solution.md",
   "exercise_id": "ca3dd3d533904c13b864ed2bd73dbbe2",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/19.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/19.exercises/config.json"
index 8cb7a5179ae106123332169f9ba9d070bc694147..42387061f8932d03ed3ee169d4dc7c11fcc0005f 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/19.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/19.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/19.exercises/solution.json"
index c24629681c074babae36d160d359020154c76dbd..22035fa3e96ad1a766b86a06bd6b4eb63da2ff50 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/19.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32702503",
   "source": "solution.md",
   "exercise_id": "ed86cdb2708f4efea6c233f131c4a005",
-  "keywords": "算法初阶,基础知识,分治策略,用主方法求解递归式"
+  "keywords": "算法初阶,基础知识,分治策略,用主方法求解递归式",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/2.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/2.exercises/config.json"
index b05977f19545751fb60035dab8e7bfec00776c59..c0c6a1861be5d44fb5215051361e2c5d53bcb748 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/2.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/2.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/2.exercises/solution.json"
index 10d3beea3298192ade9a41f58f93e1163aa09c03..44df90680b07bfcce01c75e42296d85fb1f63930 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/2.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "pumpkinFive",
   "source": "solution.md",
   "exercise_id": "44e3bbff868547b6b84567fefdd5bdae",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/20.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/20.exercises/config.json"
index f60d06233a6ad4980bdaff93a9c00d1eb774d9f1..b3c3bf4d9c70e35934b0df5cb1b0d2bda2e59688 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/20.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/20.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/20.exercises/solution.json"
index b97767abef5d06fa95c0a05b62243c272c58db00..92a97580abf8a49bb34cae2bb75ab60918f3a413 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/20.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "goddnessblesser",
   "source": "solution.md",
   "exercise_id": "9dace54a9e2647268c089328cbc0f352",
-  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作"
+  "keywords": "B树,算法高阶,高级数据结构,B树上的基本操作",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/21.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/21.exercises/config.json"
index 405e74d7a53d8e68bf86d5ae6abaa744d252b257..0062fbe2bd727e0a2cd44f6e2ec610f01212cbc9 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/21.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/21.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/21.exercises/solution.json"
index fa64df6cfea586507dadeaa25bc928a372126bf4..17fee534028679ed03045d15efe64571b03f1fd0 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/21.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/21.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "32739b19bbf04c35b20e6f1e80153124",
-  "keywords": "数组,回溯,矩阵"
+  "keywords": "数组,回溯,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/22.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/22.exercises/config.json"
index cadfaec5309cac7d1695f430e0dc016d978fe617..4edd8f34f90ba61f3b20db249fbbbe603e19c183 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/22.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/22.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/22.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/22.exercises/solution.json"
index 64c37a2221b3670c3337352f4896ae507c2848ba..baae6210023a38092d7693ed58df9cdaed513e98 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/22.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/22.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b0bdaa3932ce4195b936e641c3f715fe",
-  "keywords": "栈,数组,双指针,动态规划,单调栈"
+  "keywords": "栈,数组,双指针,动态规划,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/23.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/23.exercises/config.json"
index e0650f44a660f826e38b5b14361b46895d6a4296..dc1564b6789ecde54aa95796f468a1257d68cbca 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/23.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/23.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/23.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/23.exercises/solution.json"
index e95718b40e9ce542280ad3d88c56f365fdcd8610..f93f6e2fbb8d6974324312ce3d2a9696d2b58a05 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/23.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/23.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cb77daf1d0f443c092f414b87f37be04",
-  "keywords": "栈,数组,单调栈"
+  "keywords": "栈,数组,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/24.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/24.exercises/config.json"
index 707d7050aeeaa39b32890fdf26df011f9147a340..52305e8d2ae76328b3f82f244b64af815bbf99cd 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/24.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/24.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/24.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/24.exercises/solution.json"
index 753c0861daa372249520186e47de109183d7dea0..514bccdd824f8ade54f03fbcf1819a9b45189f1b 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/24.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/24.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "64b7d91db75249b2b9952b7c85e8b362",
-  "keywords": "数组,哈希表"
+  "keywords": "数组,哈希表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/25.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/25.exercises/config.json"
index 42cab320c5a2924722e4bd6451510b9ae29a8d19..b9bef6b1508fb3e795335046037019a1169b4c28 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/25.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/25.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/25.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/25.exercises/solution.json"
index eef4e10d98eef29b23f7fdf859a16aacfabd21a3..d58cae88e05e9c7ba88aad8e5462af69506ed620 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/25.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/25.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "3716ea4367754f8f959faa56b01429e1",
-  "keywords": "回溯"
+  "keywords": "回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/26.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/26.exercises/config.json"
index 1be19efbb3f900c5e7d758639cd0f952cfabac53..07c1cc5e7764841b04b9dd717ee04037180fa1c9 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/26.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/26.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/26.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/26.exercises/solution.json"
index 0e36128d21a99dfe3167d2921135125fac0547f7..1902c9755917a190c8f4cc2385bce511e60b1544 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/26.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/26.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1dfcbc2e42034d68a9cb9bca18c32f96",
-  "keywords": "栈,数组,动态规划,矩阵,单调栈"
+  "keywords": "栈,数组,动态规划,矩阵,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/27.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/27.exercises/config.json"
index c4cad7e2c1f46a96116695013ef6a2bdcf5758a2..d7a742f0b912aac5908ca8d05a89a788f06b0360 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/27.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/27.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/27.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/27.exercises/solution.json"
index 11e27a3c9e6fc5b3cdc6784b71e68c5e1ba98a49..d988f24eb364705f8ca3135401d68e8e99aa72f4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/27.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/27.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9da825dca95641ec9169bf3ab57db40b",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/28.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/28.exercises/config.json"
index 550038cc37152b8bf80894008e9b2e0062e79a2e..414b4768fdf46b754c0f10218b99bd4491dac554 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/28.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/28.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/28.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/28.exercises/solution.json"
index 6ac096590dd7a73cb57279754338ebdf67a75251..ee38c25da0024b2e8fa4664a8c52d5391f98b008 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/28.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/28.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "00593f4b57704a038b0429d5fe708031",
-  "keywords": "字符串,模拟"
+  "keywords": "字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/29.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/29.exercises/config.json"
index c7f67c809359a1172ff11df941eebe4d9d98f197..77f712aa320793287c99990044ad1c871a1d268d 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/29.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/29.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/29.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/29.exercises/solution.json"
index 9e033cf6654494d8a51bf6c780503d01360c8a6a..bc73bcf0a3a709739c58b2efd3d4a5e26594d84a 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/29.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/29.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "328698d1b0f24616a305fb22259b2146",
-  "keywords": "栈,字符串,动态规划"
+  "keywords": "栈,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/3.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/3.exercises/config.json"
index 9ecfbb70688c2926e04cc19f73762e163089be9e..cfbf3a90635cb49e9cd099e09af0725fe77b6a45 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/3.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/3.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/3.exercises/solution.json"
index 8c0a837d877bcaec5c5948298ec01aca5914232f..63db9599fd552f3966e2f33392835dedfd6ce8d4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/3.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "7cde4f4717e94c5bbf58bfa899802561",
-  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,最坏情况为线性时间的选择算法"
+  "keywords": "算法初阶,排序和顺序统计量,中位数和顺序统计量,最坏情况为线性时间的选择算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/30.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/30.exercises/config.json"
index 22287269794bd12c28c5b46bbbc79384bd473121..fe629f3f969f44c45f4ee838f49e46f28d426080 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/30.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/30.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/30.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/30.exercises/solution.json"
index 75a7c0a4fb350e6cc572156abc644a07c7f8ef43..3fdacb9656ef6a3c30140916bc8bd094eb448d60 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/30.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/30.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d8995d6a238f48f3b02d635f57938b2d",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/31.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/31.exercises/config.json"
index d76338463e3f8d063765079811ddbc273bc62fca..3eca004a64f13244cc3e6360ede26d9ad104cfaf 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/31.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/31.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/31.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/31.exercises/solution.json"
index c561ad2f8dbd585c7647ab59c63bd877e2b4518a..a1bb7df99a353d394c854fcd23fed5f1dabf54ed 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/31.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/31.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2d7f231378534510913c1295c153334a",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/32.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/32.exercises/config.json"
index dc383c735106f7dc6681963b57bc158b0a798c85..c72d04e554b8984b61d0829c16c1149508692233 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/32.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/32.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/32.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/32.exercises/solution.json"
index f4a5c9785d87e1541b1d823febd098c9b1633c70..028afe080bf88c00ada8f9871a6827049f9c5594 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/32.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/32.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "373908c9308b46a49d7a28894a4d6eac",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/33.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/33.exercises/config.json"
index 6802dc019207d85b244526639fb231e8bae363a7..58224f2db50d797faabf89a0f46a832390f51e4e 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/33.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/33.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/33.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/33.exercises/solution.json"
index 36cb997bae0c627e28a85fd9833fc466c4cbfcbe..2f70aa87d53561e5bb8beff98b9ffe8b8fc02133 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/33.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/33.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "c74fceb8a5a54b259fdc21001910f8d8",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/34.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/34.exercises/config.json"
index f6ade3067b0012b81f95c98767d14f35ea4c5c5e..47a36d2ececbfb88130a7569c822262767a810b4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/34.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/34.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/34.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/34.exercises/solution.json"
index 09961f7860ad021d2479500cb38e5228d6e2b7fb..45a9a4e47943f1c6d2baf27d445f136b2b82933e 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/34.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/34.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "89e891a205a14a10a2ee31a720f6cbbd",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/35.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/35.exercises/config.json"
index 1685b814b583a5838e1dea57dd9f2ee5e3ee688e..646f0aba44018b22e1ccea9259f3f47566011e34 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/35.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/35.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/35.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/35.exercises/solution.json"
index 6b10e78fa295559c41825190cdb95d9c19f967ff..aed7c5cf4a3e68c9cbe788522e3b9dce323a86a1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/35.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/35.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "787af8f4763b45f7a417b4944bb22aec",
-  "keywords": "数组,二分查找,分治"
+  "keywords": "数组,二分查找,分治",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/36.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/36.exercises/config.json"
index e042eb62e962ba66a18f5bb599fbe3681d7b4a49..d6fe82dafab0a3a8cc8225ba9d0719fbf91399b1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/36.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/36.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/36.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/36.exercises/solution.json"
index 51097a0cb723ad921ec14cb72b39c8e3509d6c78..aaaf7fcb240b4619b647a2510137aefdba93070d 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/36.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/36.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "fef93fc39e554ebaa5e936e8fa911855",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/37.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/37.exercises/config.json"
index dc5130e36918891f6dbc91bb3501b97b9b9a7496..1d73ef109f50059b7166509f7514278713d63ea5 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/37.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/37.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/37.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/37.exercises/solution.json"
index b6a8e95da050459b2d03b89d0acd8dea4d2270e7..336f6056355e3145bfad94c04f93b4a036ec42d4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/37.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/37.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1406e7cd7c1f44d3a9e63e9c3ff1cfe6",
-  "keywords": "链表,分治,堆(优先队列),归并排序"
+  "keywords": "链表,分治,堆(优先队列),归并排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/38.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/38.exercises/config.json"
index fd47434322a0ae9b0d11519f941815d6781219ae..a575b683154ada0374a411d80501a8edbc0ed6fe 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/38.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/38.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/38.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/38.exercises/solution.json"
index 462fc02ea5c89cf3ee9e3587d80fb521754c25c5..2c0f1fce6b6ed2ad05600d1e397ca036ab39ce28 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/38.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/38.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "0a486ed6f8c944cca2eec0db2b2ae39c",
-  "keywords": "递归,数学"
+  "keywords": "递归,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/39.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/39.exercises/config.json"
index 761709068626111ed53e542e19eab68cc74cb0dc..5f9afabd71d0b4a49921e7f6fae9649eea897112 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/39.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/39.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/39.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/39.exercises/solution.json"
index 6e0fbda83f9cd99c70abb318d3371ecf34785145..1186a6be66722e0744fe8a85c8c261c9fd1bfb68 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/39.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/39.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d3cb836752484324a830426c0ea6acdc",
-  "keywords": "贪心,递归,字符串,动态规划"
+  "keywords": "贪心,递归,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/4.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/4.exercises/config.json"
index 595f6245dabf3f8dfdb868bdcd840566b31144bb..bac3660a11c8f590eb691d12f99d6fa1683ae1c7 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/4.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/4.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/4.exercises/solution.json"
index 5f04c706dbc9f9ce62084b1e355cd1ab156cd6ca..e97e6ed83f75f028c48e34adb24fe67b82035fc3 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/4.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "myguardian",
   "source": "solution.md",
   "exercise_id": "f26e29717a5d4a328860fd834a766956",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/40.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/40.exercises/config.json"
index 2aa79a34ec8b4a38af7b21d78ac95f3addc1cf65..d092de66648d0892e97d0d2288f84e44be506891 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/40.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/40.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/40.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/40.exercises/solution.json"
index 319573a7e8e240c7bb95411b5518a9b95fccd1b1..454f24fe687a451bbcc94c29c95e389dc228efa4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/40.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/40.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "f5858af2c1894e0795b638c7eaa40bb9",
-  "keywords": "递归,字符串,动态规划"
+  "keywords": "递归,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/5.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/5.exercises/config.json"
index ded53e5a3c5279a8c09e2b2ec6dae8bc809676b7..8d9a7543697ddf219c61b7c8298488f0237ce14d 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/5.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/5.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/5.exercises/solution.json"
index c9c2cc63b27b6cf0ecce622f6c0a1ebb0345ff1f..2357386c9a6b04dc651e518c7280083834c57002 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/5.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_32724981",
   "source": "solution.md",
   "exercise_id": "e7452e4cc4cf410c94611ff2756adcbd",
-  "keywords": "图算法,算法高阶,图的表示,基本的图算法"
+  "keywords": "图算法,算法高阶,图的表示,基本的图算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/6.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/6.exercises/config.json"
index 620ca0fb02c90b907aa38785bc03bca5c7b6718a..8a4042051ff1033a741e653c7a9e92557629bf8c 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/6.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/6.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/6.exercises/solution.json"
index d60384ca615925d1d057dae663aaf09ee06cb13d..0315a4599358989bcbf2ca99c8ea34bf7d0fa469 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/6.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "weixin_36684604",
   "source": "solution.md",
   "exercise_id": "7ee5105ff58a4fb5817610530ae63aae",
-  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解"
+  "keywords": "算法高阶,数论算法,算法问题选编,整数的因子分解",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/7.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/7.exercises/config.json"
index 20252da66b17e99ee10115648457fcd6b5427a75..542a16fa155adfe5cc8114250f5e3e26f15712b4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/7.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/7.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/7.exercises/solution.json"
index 9f7acb5e1ed960e9237085f1161baf09b3880d68..ea5892fb2e8373b8885f70b512317368082a154d 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/7.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "u011654241",
   "source": "solution.md",
   "exercise_id": "b6dc8c02a03b46daa659052da28f1682",
-  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量"
+  "keywords": "桶排序,算法初阶,线性时间排序,排序和顺序统计量",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/8.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/8.exercises/config.json"
index db98529983976b11c03c923e5eac532233183afe..875dbc608d9650c4ac5509f616fe224728917a84 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/8.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/8.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/8.exercises/solution.json"
index a1a3a187b62c754ac32c14704885f0614f13f971..ed4c54fcdab890cc09eaf47a3ebf7eb8bc5bbb77 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/8.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "qq_29910115",
   "source": "solution.md",
   "exercise_id": "cf33ebb0691d42fc8d960a6b825d8c3e",
-  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配"
+  "keywords": "算法高阶,字符串匹配,算法问题选编,利用有限自动机进行字符串匹配",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/9.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/9.exercises/config.json"
index afefbb3fed82563cb50dbc11f6d2decd547bfcf3..c19f6cbaafca3163dc37e91dec605aded0f6a5f9 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/9.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/9.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/9.exercises/solution.json"
index 05651b75373e5ee62fe2e2072b141f61d5db8c80..392d57d7fff2d0408b0c86125f13a2923e41b8b7 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/9.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "84bb7a0f6f7d4e26aaeae6b29ca94483",
-  "keywords": "算法初阶,基础知识,特征序列,概率分析和随机算法,概率分析和指示器随机变量的进一步使用"
+  "keywords": "算法初阶,基础知识,特征序列,概率分析和随机算法,概率分析和指示器随机变量的进一步使用",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/config.json" "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/config.json"
index 0ad555235cbfbc64a62958464f1d1ddb4e23aafd..906a33beca228bf862ecb69e54e0015d9a1cd9c2 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/1.cpp/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/1.cpp/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-0da5ab41a68f4658b9965dc98958684d",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/1.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/1.exercises/config.json"
index f77838e31b418e9443e0493c2fcd15e31271181c..cede3dccfb2f7b73ef8452fbba25fd064706ebb8 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/1.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/1.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/1.exercises/solution.json"
index 69e4952e38888517a27b925e7c52bd5188680512..6a9f834560323fe567c64d861468762a69d5c6f8 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/1.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2be5212787ff4bc69fbb24313c39b63f",
-  "keywords": "数组,回溯,矩阵"
+  "keywords": "数组,回溯,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/10.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/10.exercises/config.json"
index 843447842feadeebbfd508ebea271b0f6d91b227..c61ce9704d42208215a2e1724bd2f959dbdea916 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/10.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/10.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/10.exercises/solution.json"
index 72ed5f29684157840c9005cbc676166481689f59..ca0009fbf0e66cf04b6c7a714e6d91ea4a85fb9c 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/10.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "affe1a23ebf5464aa726c9de063bec2e",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/11.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/11.exercises/config.json"
index 00687bb206228b61f5bc261c74c8a858d888792d..ed08f5f36f357ebc97b69cdd5ccb51eaf8adea95 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/11.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/11.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/11.exercises/solution.json"
index c6959994fc08f60d5a0667e45ea61e187863dc6e..4517c645f9e181bde754f92cb043646eac913208 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/11.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "bec64ff1155f4207b74a8df2248783b7",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/12.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/12.exercises/config.json"
index faef3efca38a6fe3d9af967b6c922dbbb4a2f086..aed6a400baae8cb059763d4518585f50500e81f1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/12.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/12.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/12.exercises/solution.json"
index c69311e7c22e2a402a10c2d0782ec8fb5aecc76d..4e7691b00de12e550876bdb126c8b0a1780b2402 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/12.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "68cf7e0dee9e4009a8bcd13e99e501d2",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/13.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/13.exercises/config.json"
index 258d45f60d0287eace21ca69d29ce0b600ce7115..826803da6e15c97d49bf50b4a82b774f80c0fb7e 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/13.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/13.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/13.exercises/solution.json"
index a482d0aa5937f39f94ebe1f4a4246f371352cd9b..f3ecb3befea6e2342b869085a881f4da042e4ee6 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/13.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b281f22e97cd4c4080c79969146cc820",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/14.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/14.exercises/config.json"
index d4cd0899288fa14ffecbed5c07fc50774890c03a..62837bf81cd5cd3209d2222cae55f9591db3448e 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/14.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/14.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/14.exercises/solution.json"
index 47a1cd4922b70340155ba16213d74e175f4c1861..b2dee3ec6f21d7a584d88ee45f4943443926a049 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/14.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "12ae9e6d8bf1407e9d69b4486405bc26",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/15.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/15.exercises/config.json"
index 827e9efc83bc32d62f04e2ff9c48c0f23fbd50f7..1027070d12d6c10aab4aa1503e99c448af4f815a 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/15.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/15.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/15.exercises/solution.json"
index c3971ea0800fd5c3fdeaf74e3e113066a06c782d..30760e340892fa9ed0ec4f880828ffabf9a5ca2a 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/15.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "005edbcd51084940833520189e2bc788",
-  "keywords": "数组,二分查找,分治"
+  "keywords": "数组,二分查找,分治",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/16.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/16.exercises/config.json"
index 4d51f7a1404755c77f002ca1a4d054067841ad1c..a7131892ac398c54c7f8a753030ad1d377957e7c 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/16.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/16.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/16.exercises/solution.json"
index c0ee69ecf0b8030e32c8af628bcf06a0124e5326..4da43b9b50daff954a15e6cc22a1399651d152d6 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/16.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "ff72223edb9e4828982d4f446f8a30c6",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/17.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/17.exercises/config.json"
index 6b0632227ab2bc4eb2acd0c084bb2a1f717ff659..ee75c2783fd5d7c94305850a74e8cd3befddd629 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/17.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/17.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/17.exercises/solution.json"
index 018384db60ff0dfcc381eb80c023dabfb87c1a0d..857cfed37d079797b1ec8413600f86298b139b06 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/17.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "a193b17ea03a459e9401dd9a2b776f57",
-  "keywords": "链表,分治,堆(优先队列),归并排序"
+  "keywords": "链表,分治,堆(优先队列),归并排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/18.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/18.exercises/config.json"
index dd1e31ca3246ee47a42fccce07a4f2cc5797a05c..58352cf6ac0793a78611fe4b1b65e4a5d37c146a 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/18.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/18.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/18.exercises/solution.json"
index 09f3807275cda979549ad78e11f0688c252a8c0d..bfa2911101c622f6286dda2b7f7b0d5cf5267263 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/18.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "94b082feff6a40fca932cef0969ef627",
-  "keywords": "递归,数学"
+  "keywords": "递归,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/19.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/19.exercises/config.json"
index 9f6909d006520eb9f70e795ed1ce34c4b6c697df..eb35e8b1601ffe2dde85aa7b193d1db2f8ea48f4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/19.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/19.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/19.exercises/solution.json"
index 8bf103abc9325ba1eb76c3e8715ba9b561944857..0793540e5c9325f96b2bd7ca1d44c8f054237ee6 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/19.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "327a77e1fdf6497babc53aa8be200423",
-  "keywords": "贪心,递归,字符串,动态规划"
+  "keywords": "贪心,递归,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/2.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/2.exercises/config.json"
index 20dc8984bea8dcd431d79bb03dfc9a2b059d4504..e58dc5589a72385b9e9aafb5702ee9802a11d272 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/2.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/2.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/2.exercises/solution.json"
index 99eb7a4a1a621b3bb06cc0338b2582e51cd917ac..bc85c7629f522eafdc0d12f3f3efa0998c5b6bf4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/2.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "39ad92901f2543a585b47c5dcf7731c4",
-  "keywords": "栈,数组,双指针,动态规划,单调栈"
+  "keywords": "栈,数组,双指针,动态规划,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/20.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/20.exercises/config.json"
index 6778e90e58533094184b38d7f835ce28ad4b87cd..75e6712d5e31561f1b026c03c2de37c80d6009b8 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/20.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/20.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/20.exercises/solution.json"
index 93e779dbed7a532a246f4332b2ccff86c2338081..68eeb1e7bffbb80df301bd84643cc2c579f750df 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/20.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9ce2cdfa6aa54365ad791feddc781d03",
-  "keywords": "递归,字符串,动态规划"
+  "keywords": "递归,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/3.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/3.exercises/config.json"
index f491c8968c468deca4aa101d00a3908b3380cf81..ecc9322caccc132230e8225d1136b803afc90929 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/3.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/3.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/3.exercises/solution.json"
index f596e3ddf3ac54039a058999a0816bd74327853b..2b705d155d39aafabfb5b38ae99519356a8fef48 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/3.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2bdd64d23f78480e80254cf65268034c",
-  "keywords": "栈,数组,单调栈"
+  "keywords": "栈,数组,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/4.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/4.exercises/config.json"
index 4ebdb2553bc4cd3a81264be6ba835f3e9dcce75a..5ff7e26af9aa472d3badd93aea04bff541ec5bd4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/4.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/4.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/4.exercises/solution.json"
index dae28025bd4c6500b6399f92023333ff229f3bfa..70dad9369a799c742bbc54af637cf96936ed4236 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/4.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "f7d3db8318c54035bd59132cc7be4c14",
-  "keywords": "数组,哈希表"
+  "keywords": "数组,哈希表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/5.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/5.exercises/config.json"
index 658004610d2034346d950069eb0e0e49948de713..eb3ab5ddff0353ccd042d28f76e12f7e8f13de85 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/5.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/5.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/5.exercises/solution.json"
index 253009875ea48741380a5acd3f766bae8d08d1ee..b69741c65a1170c6706c0c177d0a416b675019aa 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/5.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "6d30912d9be04c818e000311290651d0",
-  "keywords": "回溯"
+  "keywords": "回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/6.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/6.exercises/config.json"
index 4ab9b0c69e401b3f7e4d1ab6b54367c6bd724d70..32abc2b8718eff6480f394a0642354f86e50aec4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/6.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/6.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/6.exercises/solution.json"
index 919d589ec8d961ba4e44d3d14e63143180009968..0047ded4dd8889097c55d57a159cb314baed35a8 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/6.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9f009f18fba4442a99412d52adc4e3ec",
-  "keywords": "栈,数组,动态规划,矩阵,单调栈"
+  "keywords": "栈,数组,动态规划,矩阵,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/7.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/7.exercises/config.json"
index de16ab4bcb9b98784a9ce0241b89680291b4ad2f..3e662823ca3ddc25153eaaa1d952e7a5a6a73c3c 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/7.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/7.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/7.exercises/solution.json"
index 761ca01d7c7d41143c858772454a4cabc13cef3a..015a678ebb294e6653efc99e54a35ff40ab07f92 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/7.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b3e4c3bb1c7c4b92818ab5d666891a74",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/8.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/8.exercises/config.json"
index 54618612b09a7504434cc858a62c56e413851475..d7637bdb1c1018ffd6d5f3bb2913a485f9b2f023 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/8.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/8.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/8.exercises/solution.json"
index 3bd8241efc3c0f7fc3e65c73268ba448e6b08073..e839a9ed6cdc28102433468767e35d9aaed3192b 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/8.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e19e7ed951034cb694e26ae1f81448e1",
-  "keywords": "字符串,模拟"
+  "keywords": "字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/9.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/9.exercises/config.json"
index bc10fd211fd330fa0972575c13a20d2bd14dd8b0..891a83b0f49d5c76d48e93d6242f0e8dbf5815ac 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/9.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/9.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/9.exercises/solution.json"
index 9e5e6de23ccbbcb1de5f69d6b4cd6c462506a546..5ae6ca1404fccaaa111cb3cb6184765e128945e9 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/9.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "71887203923d4261ac0132359d942b06",
-  "keywords": "栈,字符串,动态规划"
+  "keywords": "栈,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/2.java/config.json" "b/data/3.dailycode\351\253\230\351\230\266/2.java/config.json"
index 288f78ba5af3076a1d20489bc911b9b46ea2f256..35fe1fb643b894be25ae4557bc3cba393ec11e8b 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/2.java/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/2.java/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-411ef54ce44a48888f8c744d484a6224",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/1.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/1.exercises/config.json"
index 996b4ddcc30ed59173015b498624dea7e2793e7c..6ca6c0b4f67aecae7be1eeddcf93432b341a2718 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/1.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/1.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/1.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/1.exercises/solution.json"
index c5b235cce3233f02faa82b2701670d85e54ab0f9..8282eca5c6ce0b4fae60c28324eb59d389291d89 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/1.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/1.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "adsls630ef",
   "source": "solution.md",
   "exercise_id": "3eb2527a26be4b9e8b24ade9a1e4b9f6",
-  "keywords": "图算法,算法高阶,图的表示,基本的图算法"
+  "keywords": "图算法,算法高阶,图的表示,基本的图算法",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/10.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/10.exercises/config.json"
index bd8c46ee90ad749180cebf6032f64d3a46cbc0ac..c6a0abbeadd0c3b1fb274acbc78a665f57f933a5 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/10.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/10.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/10.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/10.exercises/solution.json"
index bba09ff295bb1e5a2fc92e80ad5636458a30caa4..aee5fb6d16b2f75e9bce86ef9ed3dbd36ae6dfbb 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/10.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/10.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "2a073ce974ee4ef78251d2d44a96be6c",
-  "keywords": "栈,字符串,动态规划"
+  "keywords": "栈,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/11.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/11.exercises/config.json"
index 35429cf5d52cdd9ded59fb7684f0d6e307eb2306..2d615fad3da4d4143d6bb3baf05d5e2ad965149f 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/11.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/11.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/11.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/11.exercises/solution.json"
index e55d335ae53c6848832fdb243259ad65ca2e46ff..ecfa8285787872912b6f9f8ddbbc1e0b9a57ab32 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/11.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/11.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9827e15bed994daf9516416d5163b404",
-  "keywords": "数组,回溯"
+  "keywords": "数组,回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/12.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/12.exercises/config.json"
index 9aa41289b0d088a63082b83487c70e9eacba3292..f594a9d1e2b80b6651a2bf28e846064cc6f700f2 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/12.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/12.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/12.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/12.exercises/solution.json"
index ab3955a187e7fac53ff78d4e4227c9812d18f83a..aa7d39c7883561251a2d057b683f879f5ea179d1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/12.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/12.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e729adf6a18e49d38cff091fec24807b",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/13.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/13.exercises/config.json"
index dd81c6faa917768168baa1bb4361fa54584d349d..10519ecfe2b35d29e82e1484b7f01dfda2ccbee1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/13.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/13.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/13.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/13.exercises/solution.json"
index c1228a218a259680235e5053758582e028bd96e4..29990365162358a4a44444154e637c828898eb92 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/13.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/13.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "9e3e461bc83f4444ab61d8a39acbf7ec",
-  "keywords": "递归,链表"
+  "keywords": "递归,链表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/14.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/14.exercises/config.json"
index d99817e4ca34db2d73b8cf768da25b5da557b8a7..9fc7da9cdbda01e0cc99d42af9f787c1193e29fc 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/14.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/14.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/14.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/14.exercises/solution.json"
index 1507adfe5c1683353b60cb982fd8212df90fd066..669a7774e15ee65f1ff65e960feaae62db047b18 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/14.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/14.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "da3abf70d2ff4066a06f956ff6deebf6",
-  "keywords": "字符串"
+  "keywords": "字符串",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/15.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/15.exercises/config.json"
index d5f248df356659427ff7ef211dd8c117101786c5..51cbe10c9b16ed73122ed9fcf275ab92e300d10d 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/15.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/15.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/15.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/15.exercises/solution.json"
index 144ef044772db3bce61293435adb1ae5d44e6883..ca2ae6b2184c1e843a19213b223a4c152a5ce7bd 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/15.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/15.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cb863b701dfd42ad9a13552cdf2bc6cb",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/16.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/16.exercises/config.json"
index b5c0a52b6cd64c4f21dad9726e595825e7a72a28..4323ad8b5c9eb30ce1199f7fd74b84d6d5f1cba7 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/16.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/16.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/16.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/16.exercises/solution.json"
index aff37a293b60e6370eca1dbad7654942db614e81..44f876be189aa8208e49b70a73edfde4e51c3584 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/16.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/16.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "107e3219aa1e472abb9936331a95a7fe",
-  "keywords": "数组,二分查找,分治"
+  "keywords": "数组,二分查找,分治",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/17.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/17.exercises/config.json"
index 7a338d06b8f74e315421a809dd85df54aa9b433a..22ce37edf595487aff449ff5cd14251d7832ff06 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/17.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/17.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/17.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/17.exercises/solution.json"
index 631239bf6d5b2a75a1aa0d9f15d98512f2dbfe7d..65d43aa7a5f3978f4f4aa019471606de40c84849 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/17.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/17.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "e271d921050f4418847150f08c8e5e0b",
-  "keywords": "哈希表,字符串,滑动窗口"
+  "keywords": "哈希表,字符串,滑动窗口",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/18.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/18.exercises/config.json"
index 168e9063a60f1d5abf38550c3cf2ddb1b08bcfbe..796a2339d6583bfa1d800098ca9a13e714402720 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/18.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/18.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/18.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/18.exercises/solution.json"
index 321a743bdc668192be6f861b2c32b9f24b43440f..800f9db08fb9fa98a4bec7cc1aa5b96397576414 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/18.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/18.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d155a0ab95f9496fa9647cf8ccf6b9a9",
-  "keywords": "链表,分治,堆(优先队列),归并排序"
+  "keywords": "链表,分治,堆(优先队列),归并排序",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/19.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/19.exercises/config.json"
index fafe6f82c001c1e8ac75d744915c2c46630700a6..4ac139efe65ae4914c751199c1c5fe1843bd5f6e 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/19.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/19.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/19.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/19.exercises/solution.json"
index 19fee3b57530b3d25279683b68aed03cb7bf61f1..809369fb89e1a7bbceee7f0e7fd9dce073544d22 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/19.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/19.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cd3b923120a146c78e344668ed62a1ae",
-  "keywords": "递归,数学"
+  "keywords": "递归,数学",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/2.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/2.exercises/config.json"
index 56f9e81b25a7c5752fc8691c3319a385b75fce51..226b9202c501fb8f0e671207b88696bf8ff914dc 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/2.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/2.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/2.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/2.exercises/solution.json"
index ba0ce43d26a0817abd9c9c673bd1414a4c9e7ffd..70a562b99909e48bcb6052b96cbb03364ce303f0 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/2.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/2.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "b3aa8cc56abb48eca255bb6a32f1708e",
-  "keywords": "数组,回溯,矩阵"
+  "keywords": "数组,回溯,矩阵",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/20.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/20.exercises/config.json"
index 7e5133644dcaa3badad4afc49bcec4ebaa17e76c..a84d8c69f5bdbc6507e691054bea368801b16a9a 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/20.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/20.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/20.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/20.exercises/solution.json"
index 88d0a33288c7cce092f2810de5305d04333846aa..1a1224ed5824cafde6267f0d9cf236d40b91525e 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/20.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/20.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "8acf01ddd2b046fb8e4d8230e9342d2f",
-  "keywords": "贪心,递归,字符串,动态规划"
+  "keywords": "贪心,递归,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/21.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/21.exercises/config.json"
index 9fb44b8737c54a663c929e32901b534d58dde02a..90921cb6d6a2143a3852b283c4f416257c45d954 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/21.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/21.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/21.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/21.exercises/solution.json"
index da2584804a1c90edda7c88d8e584ca97675453a1..eec1b05007f85ed93e77939a28b39a7fc31c11dc 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/21.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/21.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "84b4ea3fa69744e19568bd55d2319e14",
-  "keywords": "递归,字符串,动态规划"
+  "keywords": "递归,字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/3.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/3.exercises/config.json"
index 0ea1127c222feca2935554ea099e7f74dcb2a968..2913095f11083cbebad094e2daf7a502b3d83914 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/3.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/3.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/3.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/3.exercises/solution.json"
index fd11d86df195b1a6c9e83dff887516cda7dbd8c4..34db9f1866999dc42c091771b9b1144c8da1f561 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/3.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/3.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "cd72e38163074274bda87cdc2c2858ad",
-  "keywords": "栈,数组,双指针,动态规划,单调栈"
+  "keywords": "栈,数组,双指针,动态规划,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/4.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/4.exercises/config.json"
index 4b78697d3b656fe2c5d93d73a1c84cf904a1b970..913709cc28393bd97f6ba05c0a5f948101b8a7a4 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/4.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/4.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/4.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/4.exercises/solution.json"
index 7178b4dcff127a9a13bdef9551a2ed028ffbd04d..49f44e8fa3be21570c048537ed9834b4d0c12de1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/4.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/4.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1c00801cdeae4722b253ff7df4be7df4",
-  "keywords": "栈,数组,单调栈"
+  "keywords": "栈,数组,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/5.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/5.exercises/config.json"
index 85e766beff9c8d486dc1865654801b60fdf2f259..dfdb8cd31cf898fd18b7973cea09632576f5028c 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/5.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/5.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/5.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/5.exercises/solution.json"
index 67b10037d7b1ba84f68abe4d4c21d1203798a665..280a3c92c8db120cab6f7a4907760b252c5f24a1 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/5.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/5.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "1f4232c2b3234db68fb48ba078562f83",
-  "keywords": "数组,哈希表"
+  "keywords": "数组,哈希表",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/6.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/6.exercises/config.json"
index df4e3884be27565b07c558269d7b1e1111a67e5e..71c7b10310748fa3e7174a515509bb45939e5a3b 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/6.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/6.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/6.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/6.exercises/solution.json"
index e328d79db0b3274c72d4895a9072a50535a1e485..aac3138cd259d09692a49a0ba6bf77de033a04a3 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/6.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/6.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "8958654b9aff48ce871454bca4874511",
-  "keywords": "回溯"
+  "keywords": "回溯",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/7.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/7.exercises/config.json"
index 001c17c0bbf4907a8cfed029440ca9605a2aefcb..2f8d81607e99a171e5e29c6e2b297120aba99493 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/7.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/7.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/7.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/7.exercises/solution.json"
index e4c482f7513f302043a395cf4285a1703e904efe..9901759de3dfdf3ccb7e67643dafb26f58158d5d 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/7.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/7.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "af8f002cd1d04bdaafd89c7c1f7d1eb4",
-  "keywords": "栈,数组,动态规划,矩阵,单调栈"
+  "keywords": "栈,数组,动态规划,矩阵,单调栈",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/8.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/8.exercises/config.json"
index f3c3da98e021b5a227b38156e142964ae8e9eaf9..16e60e2f22e9b742b6f506c4a9604aef35854c71 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/8.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/8.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/8.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/8.exercises/solution.json"
index 623d57fab41683edf72af55b28b1041b6e61845e..1a992008babaf998d0d0c65f40455fb197c656ae 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/8.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/8.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "d97ccce8bb6443f9829ef7949895a1b1",
-  "keywords": "字符串,动态规划"
+  "keywords": "字符串,动态规划",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/9.exercises/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/9.exercises/config.json"
index 78577a2994cbf0ce90a370307e014871abc72671..aa8221b028fea2bfaacee94c586a5ca1810c913f 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/9.exercises/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/9.exercises/config.json"
@@ -4,5 +4,7 @@
   "children": [],
   "export": [
     "solution.json"
-  ]
+  ],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/9.exercises/solution.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/9.exercises/solution.json"
index 145b8683709276a15190646bab24c54413653191..7124e150ee6d9628175ecd3043132041a5d87cb3 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/9.exercises/solution.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/9.exercises/solution.json"
@@ -3,5 +3,6 @@
   "author": "csdn.net",
   "source": "solution.md",
   "exercise_id": "72a7e99c2ec146b29fe662e34da41b4a",
-  "keywords": "字符串,模拟"
+  "keywords": "字符串,模拟",
+  "notebook_enable": false
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/3.python/config.json" "b/data/3.dailycode\351\253\230\351\230\266/3.python/config.json"
index 101e77de7e243b17179c386a474d9a35061c2e19..02b49a3756fb35c9b60d93e732da851e716efe64 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/3.python/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/3.python/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-5b43853695af449d9d39bcd06550fd7f",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git "a/data/3.dailycode\351\253\230\351\230\266/config.json" "b/data/3.dailycode\351\253\230\351\230\266/config.json"
index e3abc633d7a8ac021d820f5f24500d39bb75fb10..a164d76d4020191c110bd9d2c53ce5b928d154b0 100644
--- "a/data/3.dailycode\351\253\230\351\230\266/config.json"
+++ "b/data/3.dailycode\351\253\230\351\230\266/config.json"
@@ -1,4 +1,6 @@
 {
   "node_id": "dailycode-fb69ab6a31c34ad4b5ba4f2869c27f75",
-  "keywords": []
+  "keywords": [],
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git a/data/config.json b/data/config.json
index f3f40a4c09d41cb213f325e735be79e4cd7a7a9c..04f003d976667277056605dc1ca75cd7493ed288 100644
--- a/data/config.json
+++ b/data/config.json
@@ -1,5 +1,7 @@
 {
   "tree_name": "dailycode",
   "keywords": [],
-  "node_id": "dailycode-f84df733829145df90519ad1795a5ad3"
+  "node_id": "dailycode-f84df733829145df90519ad1795a5ad3",
+  "keywords_must": [],
+  "keywords_forbid": []
 }
\ No newline at end of file
diff --git a/data/tree.json b/data/tree.json
index 141befa33c23b706331fb76e8319817f528deaf1..ee6f414dc55f57ce36f3b3699d60ce8f60ea1d72 100644
--- a/data/tree.json
+++ b/data/tree.json
@@ -17,682 +17,878 @@
                     "exercises": {
                       "node_id": "dailycode-e6f4640190ed47628252f04040268ad8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b5d53da6929b4a0abe12a37e1d7cc77d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f40f4ecc0b244fa186aff0bfb9976b7c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8f4a328fa32542cfbab686f197492c17",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5595559543584bc69a5db8ee9eaa3956",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d83f9085634b418e80229a2b5a9cb63c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-aacd972c55d1448d89528565d5f3e971",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9de7041eccbf40b2bfb816106179b47e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0646f44208424631aff031ba6ac25524",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-194ea4a62b2448fdb6199ff24fe4b792",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-93ac67f3484a450782766cb42d60c7d9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0591b6205ae742d99237ec57011d3da3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f90fe85642964ddf8bafa6d3959bfbe8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c3bd1518391f41a28a22b197f780f99c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9b2837c3037b460e9a6fef477307ca55",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6a3894fe143f469f9229536c8807448d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cbdb78f75ef94f96bee28a6489a3b835",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-18b330b06c254136bf00850f53290b0b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-81cb97919cb0454d898a43fe8d41f2db",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e8317165a816402db457837074d998f8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8d63cf73e9b24854a41cdf3f51c89418",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-576049e4d5e9473fb838a71d21ebf8e7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f0faa8edc8874ab2a4f4a761afe12be3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ed083cfb659044dda203cc8c52aac153",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8e7e471646514e55a8f6339debaba0c2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3e1477a0b53d4f95861e171bb145edfa",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7361c99af21f41d7afc9ef2a7d0c59e2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6d96a821994d46f8a4c62dfe46b82481",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-eaf833a2755343bd8b00dd67e8473e59",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-42e8e695908b45c9ac0372043073d584",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9054271f126f49929fe1552a8017408a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-76e2e197fa8044a5939dc87d01245e2d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e44f156234144b6fa859e5ed82d6bc4b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-23f2d2d00dca43bc80d5f4426c190250",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9662f082ecb24eafbabd9cc73d7a5847",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-41a61041f452440ba9cc47d98c9b5087",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-50a57ff04dbd44e19752bef441bb988b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0ebac8b47771430ab733f371d755a8c8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0d0995dc614d484ca466036511232672",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4928f8d1cc754a6e99023dfe6fcc645c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-58a48a2a35404ef68df4d1d487615e2a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6b6cb108231247e8a0d25180f162718b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1ef5eb82d2104bb499ae0d7c160eca08",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c38e888a041e4ee59422318293d9fc97",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-64982f9ba8dd444da2c236c7f074dab0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a210905d5f7e4bfe9f46bb1b3400b70f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-39f31fa6e3b74d95bcfccf7c3f06c192",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3770668fea9a4a22987320b43d573fd4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5b71b02dd5694fccae63bdaaa74c208c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-00acbdbae41242b1ab11f3f2a18db473",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7f4ffa5e3eaa4012b0eb71d6930387ba",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d4b456f961584157aa5e8a1d39710971",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4eb06a6ddce54064adf5c37ab70cc96e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e90b3773494b484a95cc912b8b46f4cc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a530e610620e44b4b389ef63e0b238cc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f8b6fc2e76794fa78ddc5af2c95f9835",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2d0e9720703440b89c4c78bc0eac8cb4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ae5a4a9413e849e4825de0a930c4649a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6aef4822e3c54d95b4bb480d4242e5f1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0824e8c594e842248af440381b6aacd2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-292dcb01772448409f0093e9ac99b7be",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6ee8ab461708427d9f8200b2ead72d59",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-543bcaa53c544c4fb98725e053e59643",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-686a56ba3191489fa5065485ce174e28",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-121b4679b80f44f89234d09add8823ed",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a6c021ade4914ddfa95a6c3749b39e97",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cbca6fcbc4ab4dbabee8b7376d875e60",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3ca87741ab2a4756b5cfc06351fe7944",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d8fb51f903054d09b3e3e8c23c3c0036",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e4b3395dbb454921b2844885d5edee8b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-776b17acb3624028aa64d4ab4f22589f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-fc25afd2c08745858aec1f80a7c630d6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c2ecfa9c0205486dbee24ece017d6df8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a3c6d1ba3eff44589c32c36ce4d9d666",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b0c64306cabb407cab1133d28d2fa2ec",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6141961c2aea43338135ba51d2542d23",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f74d4a8827134b95be99a1cc4e069db0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-077c4588ce144b738c311ecd56b6c249",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1f7753ab85df4d1d9a4479becc5c6b4d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-384fb1db2ac047899eea58d0ca0a468f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-efad5e20482b4988ba117fa63d173a43",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-23f90fd7082f4f6ab37a2f1df0d084d8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cfd7bb9455e644749ffc5204d9012feb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-93bea2166c9f4473bbebded26b678bb7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-248bac1e9f8049a797197ed6b8d08f56",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-fc5373cfcfb541a1b12ec0dbe29f74cf",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9cb6069c227e49d59ff1dc8f968e7444",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9e2570888c7f4ba7a4514a64f9d837b0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f5e6dbdb903048868b02fc2916a4c8b3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0a98fea56e2241aebeede7b2f502bca7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a56baed6a62a46eebdc8c20b2ca8fa0f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ec47904e86d843648adbe57362e3fb25",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-14c9f2ce4a074e43958cde1273f03140",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-673456a32b054f3498baff05d33b8a23",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c0d349cc79bc43b6b66a4e561c11adb4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-da77f23647504d0d8105ba49f9e7c3d9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5a79db90959f499e9cffd301f9cb1554",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             },
             {
@@ -704,339 +900,437 @@
                     "exercises": {
                       "node_id": "dailycode-6800f6713d5a4e85aa6db48e6c5a8d97",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a56e385c4b5c46aca7f4e809ca7d9c2f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3d37655535b94c67973752f1082916b1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1ca616758e884630bac67b234def92c8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-76e2da179b144ee88079177af1baae8c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f0884125382f41c592c2346b73f34e30",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-642fd7e4d1d94f50b103667b52e349de",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a97f6434fd15477d982f9ef33297caff",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4599bbc177164a5fbac3c9116aee0c05",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b1d024a612ef4995986230770db68e62",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bfa08919a0914b6092a54578c976c2db",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0eb0d6cdc41643e89bb5683c139216bb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0cf6927a16a24e268a24657d6960a95a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f212de10cac247a4bab00cb73e61b645",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4373e77e72654321846d4cb7d92b7935",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-91a33b05aa5342848cafc5816a49e0d4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a9a7e4b9222e4162853a11cfdf80ee99",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-60a6ce1c2d794a2bbe410465d3a02887",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1cd0efc5eab8483ca912341f4320382f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8c4886e800094c849c6eec647e0c04b7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9f809286599941568b67aa96b36c603d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f0382b88c43f411fbf4bf8273bec3247",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-996228f46e754a58b78d9567bb808499",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9c270d6326d3421c974562ddce0e3a56",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4756dcc742414555aafd768d88b1b5a0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d3e5bdffa99e4c26a254dac53bab6424",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2bd314f30cd143a5acaf9847ce64e8d1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-199440179d394fafb06dc367103b6359",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e7a3cf5d0ffe48a6ae751e69c884fe5f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d733ec126a274808bc4085078f5f93df",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2adfe208aeec4d2fa3eb42cb8361e417",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1aec7acacc4e431e9761929aa7a04af3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5fc81f3203724e6bbc28969923a64495",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b99fbefc0fd34ea9b5a17db12f45f1c5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-31d9a5c7f596454a800d98f4ffec6e67",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8fcebe8098d040f7a3dbbb9a40d79501",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4b8e2ba0678440539ca1fc73c8852103",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-69d51623b58146baa7164733d16a104a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f82947171c0b4413b5364fc8d0a9abc2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4a30eebe19474c4fb0a387ab45a684de",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2ab0d6770e5f46889d71ba2f4b2e1fb1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-df2108c0132f4f87a1db8b491de4dc79",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3cd29560f5674e679333d243e81115c0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cd10c107bc354eef83e1b81a46b78db5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-77f941ad05c44053af905fd80f942bd5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-00a267eca7a84efdac846774beeb5766",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a0ba50f39b734de284a9d868affd00a5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d1b9ca19b0a24258833ae33eac8f8ee6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             },
             {
@@ -1048,339 +1342,437 @@
                     "exercises": {
                       "node_id": "dailycode-2eebebfff6fa4188a9711c043407e25f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d23a2d27d45a49b197d1cd6eea72f56a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6d903ddd2bbf4473b7d0e9d6c0b0c2c8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-32ce873ede9141efaa8c63975adf1561",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-94df85e9dbd04a8cb60cec11aa9b170a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2e6302bf718d46598da5024957c605a0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-37725ca16b9f48d7a618ebe5d654955d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-eb8c1b6d542e4aa6aa9b722336978115",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0e465e8d70a1454a8aac9dd2da5f9325",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-95f5fc9c54d0497ab2c97dd8c49b8629",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4e18b0172b18463dadaf46362740d7d0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2bef970158ef4ce2bc686d63ee943610",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d722f2ee79964c4ba0ff10be006ed793",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5e0a54189fd843a8954fa9ae5aac50a0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a9142d5aeaa848daac6817cae5a08bb1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b3bc51803cda4223ad95594ff9597d61",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-be86731880ca4fb99657c3f64cd64235",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a348977e517f4b358abaf20c42988cbf",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-495106c5ee4543a98d00295b797e3982",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-654c59b4c5de4a82af30051c65b06181",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1dc9532947e14e2aaa9274f1ba3e093e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bb13d528854f425581da02db1f7f053b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-45221df1b0024a78bfef72b49e99492c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6a1541c03bbf441a9f896331a5d4cba1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5d456f7d55404cf799b24bcc882a1553",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-309fe024bfc848f0b91a68fe6b953057",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-286abc7bb8fd4a43bba78b881258b513",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9beb2eba588841a6b73e635b2c9fad46",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-899d89e48f1148048fa4618b855c92cc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4047f84489c9453eb082e3e15cf6ad39",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-45ad704b5bf2410f91065df96249a035",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cc53b8c00c3b47e49acec679ed77a9a8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cd394beaa1464dbbac796050086c3f6c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-dd6c58cbe89a48799101af843c45a7c4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f46ab61031ab4af6926cc6db067d1b78",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bb67ad165b7640ba9bc5888f3d4a2647",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8d314c28e1e44f6e8b8c85d1ddc064fb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-40b9002d2beb42aeabf9947bc8af5932",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-97cf74ce017444f1aa65cfa6a8ae7451",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7f49212df36b49e78915b9f27d2c4387",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5ca24290c093492b987b122e8cb2acd8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2c643620e7db4198b4799fb816be0bf9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5bdf8ba742d641e29ecca718a5fcaab6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d5d81e058c794c00ad9824c7649d4168",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8c71087921b345cd8aceed9913f3cea3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9290d8e155064971b7dac798bc6e3b30",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-87c05af61eca47f899c58a92805fb9db",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c4157a6e02994060aa622e2fb33eda35",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             },
             {
@@ -1392,727 +1784,1162 @@
                     "exercises": {
                       "node_id": "dailycode-7d322d7680364e9eb8bd499d459b5830",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-fda12588f1f240ba9e6a0d68a5988930",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4f67dc4da72a41f6b12c2ea744c12dda",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d27e122b8e6b406383a640fe29f0d801",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d532c487ab864bf2b1a89733541daa2a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6db64e6fef8c41979a0e555a73904772",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ae3f4c23378d488fae3eef5e1ea5b9d6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c1e34791df744e9aa80e2170f6165279",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e8bc1d68ff894091b1bcce5f3902fd77",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d830455981d94370b9c1d8818f9be557",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5768a004640642f4a6d8ad05da14c6ee",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6bbef4141e7a49a4bdf572a75f0da5a6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a4c3a6f260b243dba3a75bbee1ddd3a0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cba3c9a6ed1f460ba5b586eb0a232e62",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-84c9b65036c845e8a77148e5f344a4b7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9b16c89cbe7e434aad1c5465eb2b6da9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0d3635aab75f48beabfddb5726669e18",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ebb4b625582b406184b9338718c47c7f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c4ea7b5d22024757bccb60adbd5ef2ef",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2dcd0aea6e1e4402aace9e6aa5302c85",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-eea138527d38484791eb791963f43112",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3af8b35b6d2d428ea3854f422ee39a39",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9d9d7fb673444ab080b7202400e04a7b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1874bb8928ca44d6a48d32b9bf947f1b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2a111fcaba4341f7a65a09a7ede5a48c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-20e735ce3b6940bbac5869f49fa2ffae",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-82042adf0ebe41d2afb1c38e03eae895",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ed83b0d2e44b4b3b9792ffdc3edc7c82",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-645f76afea594faf899ac96fed1d29b7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f1bc4c2a0701401a867657c88bfd47e9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7dbb8f79dec54d63917d654a988af3d6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-43ec2f7700d443ef860de334584a26e5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5ec33b3b364b406e87fcc94a91078a77",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6f46c79e24064da68c8274135b4e7bb2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2662cb46d3c74a52845c31c044f25d64",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-fa9ed9743c364d24864df3456b151572",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b92c284f681b44608a543e612537b351",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1f7abd44fd63465f90d5874249906d97",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1ab4e305968f4caeab0af3453504084f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-de7ff98a55c4460cada3f34683a4681e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7ce70a8d2a144e0d93c8d243a3eba9e1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7ec5c3aa458e4858b4b6b40ef7912f62",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5daa7f0d16044577887902bb1d7fe631",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2ad04575e5514b26b1fa814eb860c470",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-76f76e1c35fe4e8bb39c9b74184ca7b6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8d92677f51f148debc7fab5c5580c0c1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bf70aecc1ea446cbb690ee7b999f5464",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-98c411255a4a4cb19daf3b8c4b26f169",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-70f7f6a456bb462dbb55aeecadadf626",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-12a2e7d208a34209ae453b06633584d4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3a4af76d4d6348139205ea2b8874fbe6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d689d8cd98cf4c6ab0db382d775cf3f8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b1f359376f0948de9214b9a9114c983b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4e899355f25e44f3bd5411bbafe1db2f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-162687a20eff465e9380c51be73134aa",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d4ca484c2c2c4851ae05f24efa69387a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3f3d19b3a7dd432780f957e0e72457c1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9cba35f3c300452c8ff82045b0fbfe6f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7359c47192094def92008a17778d76bf",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a6e79afb743b483d86f9e071f878b420",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-30cd8f8325714a92982bd2cf0630afc4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7881e4a81e864c7bac1abf1e2bdf4da2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0624b49dc8e44aadb007ba6d2715c137",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a6d8223f903a4e40ab87582765198156",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-251b5a16ba714934a8a7fa216307fa6d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-97b847e683774717bd5cce6bf5c6f009",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-dbfc9553f0754363921f59cf92d01440",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6e51f330d8694426add5c311f6ceef7b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a4e1e718a2454c02acf68d29536aeb0e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6f559fe983984cfa972d8898e37d9e65",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5090ab3ccc5b43cfaec61d71920b575c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d4f63b8f23874b9c8f7a5a8cd91dcbe7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-77a791d530dc402db72d691e6b89d3c3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a48d3d86c52344df91d358ecd2f8f63f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-274f3810ac424f81b3b6db4196775141",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-32c5d067cfda4c76964bd82da5387288",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-89f52ebc8a4b47739d97a12253077695",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ee85ae278fd44d9da846fbbf5ed4c7a4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c0aed0c58957433cb8f1868a22055cfb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9a0780174e694f9bbe241fd378e0562e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-01b9b605fcb04130aef43a9bb66e220d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f4e17b152b314f12900cb6e56461075e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-87e44019fa8e4b3b96f8d574f854c559",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9b6195cf8bcc4bc68defa82c9d54710c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5970022817174efd8c186ac98355e556",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0aa83a4f75ec442f985f2804991a6f9e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-697ff18599bb4706827ddd35c5894dfa",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d8ecab5a68b24f72a87ed9eb9d4c3eb1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-00dac97bf0af46d4b20e08f62b95a31c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-29e3d0033a9e467f84bb1a11d9469f4e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0e6c90044ce443ae98492ad6dd571771",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-052601f2bab7422b910fb2099fe48ecf",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-be4e2071c24b48578065de9eadb4beea",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6f2accb7ee4047be818220aa04bffc98",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-546b01ceba0b4ed7b4110b7b54f5dea2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-aea1e1a0b8194ca3a4e4a6d499734159",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9d17dc8bf5a948ccab1eb31f11d0c4c5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-07916c627dea406983fa4f459e35bb3c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8235273c8c81448fb35275281f81d775",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6bfa7f2885694ab09f5b71d25d15bc31",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-70e64d37dbd04624a69892967e525415",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0a97930729d84311a82d05cfe4c18d5d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8afbcaa167c84350ac71132140fde05b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-3a783139b7ba4b52a74504f1d6b9e7a6",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-bba8567100b848aa82758c9418d5ccb4",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-32bac8dac5b34f89b5b8dc75a5f19a39",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-66ae2b099d834c8099498690e23e33b5",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-4823423c35904fa6a0ddfd45633d121a",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-3a9f92c52bf84b58a49300c02440e873",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-ac5ed4f8ae2f4472b1affae297154297",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-e90481fb818140499b31d4e2fb89030a",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-91aec32565404ada885c69484e07cdf7",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-576a315c842d4532a7c7bf50d6959e6f",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-ef34eb67dcad4a5f9aa32db77c403dbf",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-6e7b717f6010462498251c4fc040d65b",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-0d61911ed2b64af190374590d9aed4c2",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-90e6d52761784f3686465c29d66e8bec",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-82723b84b5a94104b7ed0c881440bfa9",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-beab9431f7d04245861e1fbb377781dd",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-99416f041f1c44cca0eccdde38162f93",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-aea5f678498047fc8613899dc318b3e1",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-3a74e6bda85041e7be7be316ef6133b0",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-83d408a356624bf9abdd847a57b1cf7b",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-0f1762276c764c0f947edd773bc3ae21",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-b1f209e9d0f049f590eac7593b027bc6",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-9298d3080bd74e5cbe1ea002d80e8b74",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-282248f320364822915fb7c345db78c6",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
+                    }
+                  },
+                  {
+                    "exercises": {
+                      "node_id": "dailycode-587e137824f94505893b00a7615417c9",
+                      "keywords": [],
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             }
-          ]
+          ],
+          "keywords_must": [],
+          "keywords_forbid": []
         }
       },
       {
@@ -2129,612 +2956,788 @@
                     "exercises": {
                       "node_id": "dailycode-ac3df0d6b8e540ac9cfdf9c074c33b33",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-04771a9a92f54cb1b4125e4528c6a193",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e140a9b572594a378231e0b69e615f00",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-fe4cced5cecb47dba951613f6b186850",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5afc633f3ca1461e858b1cde58b04b68",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a196808cff7b4cd1b5bfbd1d5020ca31",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5d88f5aea60b4d6e9dbd83c13e22993f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-04711f16d9ef4c92a4b8c611f05fa4d4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7f4aaca343fc40549296badcaa53bf03",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5b037f31a3c849158d21cbaed4173fa7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ac4ab7abcdeb482bb23684e08a27e9ed",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-df624f99477f4489b3508b5d947545e6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a91ab2d4ae12479088f6fe0653c5f877",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-dab42155788f4df992f7bee3d2ceaff3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b930e3c023e1440ebb20130a7a2d188b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0cef0ea9a9464eb8acb4a439fde7c351",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-707a9a26d46749e9a9e2dde825d0421c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f5bede05c3a2454090a4bccc0479462f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-390b583c367d440f80eaa10524618444",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2d92b024f38245afa28cec2ec78b78cf",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d42952ba501a46e5a121004d2f62e724",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0c1bff5243bc4c4fbb688b0c8e1d1bc0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-33f647ff549d4301a57cd82b9872bbf8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7077b339c1ef498ca92107cbc966a652",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8159c79d4b6e4544bf44d1f7b9a57ff9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d44bd3f0766b4d3b92ff5b5ded112675",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-69ef472d89dd4a86ba769fd50d0ad909",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-022a4daf03b444b1b4fed08a83b469cd",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-22d0c66ac13e492ab38799ba4281480b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6a239526fac34bcc9894cfee622ca3a4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7529fd6dd7004bc6842a048dbe5f25cc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-11e24a6aacb34945ba8db8b0a1f76088",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b1ac676f141f4700bf7a6461416bf409",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cf3b107ef2f143bf9071cd2d97d83a02",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-86063bc2e4f9408c90a68336b7d0b233",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-38ec094e925c4284a95356064aa65287",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-015937d27ef34a46b5ef9f61bde201e1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-476afc7e273347f9bd276d7b148cf931",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1d70b9eb3b884de6b1e5b8b30a25f2b4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-66904ffb7b03468eaac045c49a84d854",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9399618c5b70447fa35668bbe36d2da8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cb4872e5db3e4e259d3f87e69917426c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-14099290be73415196ac10c7668e7aaf",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bc7ff3f59cfd44729a2396f96ae5506c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5a4d869e768940439c9c3f0672b4f188",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-106a2c55943a4191b61ee447cf14797b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-04de312db7184d038e58eb517b6b4977",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c3c6ea1a42034a1abe5bbb20adff156d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ac2a4675e933469195468c03c2062381",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4b7ce801ab4b4c89baa38f79b25c873b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-eb10661e86af495b8acef4aac7e1af86",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2d11d0b5706c470bb25b9eb3ec8ab140",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5916246072a346c986fd14202099c13e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-51ab560c60e241f9ba4b1f449db8f4fc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a6beddb2efc64ddc8a28e593dfefc807",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1b393b30506f43f6874f85036d16a3de",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6c74549bf696457084ef66af3c8ab6e0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9480f3a882734848aeea80c4b8e0fa7c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-73f719eb3c124f11933e47c2cbcf4c7c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d1ede2d2c5a54e91a19273b3f31978c5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3880837d907340c9a9e96939e9fbae92",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ba756fd53d6f45139d2d818d4a555fb7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-09529ae417314d8cb84c07be9aec2849",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a6c3e70f1c0045c1b2929f56cc5ce02f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-eef49c9c9f0943f2a27bb9f4dfb22718",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-81f91206205e431f9ce2fa179955ecfa",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b2dbc54134bf4e8a961f1b155e8c665b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-58550dadc0174b719c8769c5d87c8814",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-74b60540beef43f7b8e98cf2d1a4580c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-248163efec6747ce852e85ea2dbe3c15",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f16026ed484a444fb95e3d6698f5f119",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-841814f7ce5d4aa18c3caecf27c8c494",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-70f141b3ad9d46febf18fbdbaf90c0f4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2d3f4293f7a84ff2a372da173fcdd96e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-042b2c59e8c44737861a74454b50c22a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c32c095cff5545278e9e9e51bb3cdbe1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d5fa1747371e4789932aeed9ee27bcdb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b3f62c12a2624288bb79b4210b44e046",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-afe07aa3dd7c45bc9d6ceb91b6349f93",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c93700cb5c094f74a66dfef7fa2ab6b3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5566db3ee0444562987747d551bcd75f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-afaa892994bc4a7c920701ff7efc3384",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-93f92073f6254a549ac8e0010c008337",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c35251e8f87a49a7a4b5e149f073dea8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-826dfcaf541147bb8be5b8a3103697ad",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4636efcd81dd4e2a9f8f83ab23b80ffe",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1964e4bf97984234a14f997bb1352fcb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             },
             {
@@ -2746,451 +3749,581 @@
                     "exercises": {
                       "node_id": "dailycode-e4f08941ea62439cb49087bb21e1fdb1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2c34fdc356ec41e1ae1c01be149ec729",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bc6b2d6511254a5f98339f5f75c558a6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5bd0909b7195425cb8eb7497477bdc33",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-adbef0040dc440618bed1f48bef2c16c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-77a803dcb98440b7a136a24276b6854d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9d0fc0cf99704e4684d62717fcf0025e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-21945d925ace44438887c1e03e5fa8ca",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cdfa1a7c19ef4e879fcab664e5c47371",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b97a45db1664450db39afacc504f65c7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cba3b9fdcdbc447981e98ac7d67b82c6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2b9e60620fe645f883040218b22a8d76",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-150f426952d9492f81925cff61127646",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e7dd2c02e6b94b02a2cba6cb32b0c0dc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a176e82f286443f5a97e226011b84a70",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c49e020840b741d485bc11bf0855b4e8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5d5d68a0fee64164be313bddd528142f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2b4e10e9e01a4775a03f2a7bd8cac54c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0fc1b6a999914e309d0a0e484e5e0c85",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b087bfd39b6949ab8e67326033d74792",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-512d40c59a874474a237294910486e0a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7fa5cb6f690545fc865aece3cd1a74a9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-06979d4bde9b4d048a028977d9bee368",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6defda4fbc254df7a3a4f2f78233091a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f7794a1f875c4fbdb5c90aa69bbb1d1c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8df6b07a74a3448ab4d1ed17cd59ece4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-63f1dfb5737e4d0eb3afba4a75fecd8e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-290dbf6b65274179954a9f182f7a2f98",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-423001ac26c44d20a3572064866b8a29",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ce734aa4eff1425fab72592000d1eaba",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f73b6a74269147239eb2e60bb9b1bec0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-38686faac5e447d8b52391e777bd15b5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b797b4502b324dbcb41cc7d3ddb2bdbd",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4a27c74c6807494493bee7bc2b275d32",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-596c3dac8f6c4d31a61477304a726299",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-50818484f6ab4ab08262ca694785cdbb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-aa14a10d3dbc4e2a983c7cffd4eca240",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e782222cd8894664b3febf53492cbc11",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-68a4069880464d59a2b217ebc248c3b7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c4d4538cdb4544b1871d8b2c95d3893b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7873feae482441e5abe2a0319821f44c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e9998c9054be454eb2a0a4f69e129830",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-40c4c366546a44b5930491db827d2c14",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ccc2cd1afb9b4c05abec6e80d581bfd2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-47ce044c35bd436a8c83976d0f209db9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-68cfc35ac6174d01bfb5751c70035252",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-97b59f64908e447ca8f6cc62c7d69b2a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0da11b12c20540a69a7df7f71bc052af",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a4f351932be94d9388ffb510d2ff8dc4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-620f5bfe852e4cbd9ce5c2eb848eba27",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7c1a5ad714c441d7a0ccdee3c819e4c6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a51891de4bbd4992a1ca2d8d786bbc10",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c1da5b7b32894b2691bf58b40188b67c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6a33231763734cb28a58cca9e68d7ecd",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d433cef163fe4e2fbdf5bef441506da8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7422725251434d6f802d5c3c67d3d8b2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6007336fac224f659d45e9b3829c6726",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bcd5c08f84344295bc2f185d6944f7c2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-16ecbc0a44ff4036aaf4be01fd07e40f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b6ed4d3d6d31409fb7f1fcc072ce4295",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-06dec96ef4e941b5b10c3a4feae74ddb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ed11e080bba44d2bb7ec98bbddac3ffc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-da11ba53a9bb4e6b8880a2cd184933d4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-56e99b722b5641bc884da20f47a9386f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             },
             {
@@ -3202,447 +4335,577 @@
                     "exercises": {
                       "node_id": "dailycode-c4bd91e863e346e8860401ab6914732e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-10743c3216c44bb1a4acda922204abf7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-df5089b6b16346dcb5d24198a0eb1e37",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e255b434da964a3e8c1104d1242677a5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d23d7c0418f84280a2ef890bb4fb1757",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a7329b367a72496381d22bcbc15b0ab1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b1f1ffa8aa944017bc6c7f4d7b9cece2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-62b760478e454f309a425bf1da91ecd9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-527f1c40eca54c19be59eb9d93305dc3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-69fd78974192450ebe5d6fe0bbdbfa67",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-061ac0473af848a6aea1b1d7380686f7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ebc866b086ae44a79c65cb99235a170a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0da6d95ed1b54b8e83d0193c88e6c237",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-89a4d210cf6b4a96ab49088e293fdd9f",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-74272d3291224f24af9d13e734d733f5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-1cb29400682c421faa8d5b7cb588faef",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-fe3d45a08a0f47858df48e044d0ae2f9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8c22cff947234df7a45ae4e553106499",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3e9f6ff35d514b77a9785d61386e9093",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f5007b90ce784459a128ea75d2f74143",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bdac8c45d3904849856e3a056ee32977",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7e632cf98b404ccba54e61ca0a59ca24",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0c3fe32641404f16be867b3a3b4777a8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c35f1b8b4df24f2a9203047c0d6474c6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d806ed41ab324a0582401a2c7b2a3da7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-178fdec62bcd41b0ab5d6d59b0ab1b74",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-38889c9cdaae42f4a0f4a8c8a9c710c4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3caea3b49b034e598bc0fbc44f533451",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b502a08a7c5c452b98a10f067e5ac1cb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f705496a584747d69e1008f88a6e4bf8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8f5f2e3476d345f0995743a1a93b93b5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6d9dbe9c0db5433dbf81e522dbfedeb0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-fdb0c6ff79bb497cbb659d0c0cd3aa0e",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-0a11733c91fa474bb7a32059c929f5f2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a80939d1f7bf47458f330cb20db27c6d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ab955e0c23904c6d8b3dd32fc4d80da1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9f59a4bafe424c768dc1883a7edfb04b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-950e34d34dc94847975e1ca56e54c574",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9dc6613c2af04b408404e0c407aaa7c6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bc3eb1c20a03474e83551d80ab9725c7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5e08f34544f041569745d22d11919871",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6afc8fbcc3f245aeb6bfea64f87d53ee",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-15dfcfc57f144a59b0745657fd22e7de",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-55947e6bb1d6408ca60413a7d03f7e38",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c7d55f870c9244b6a627dcdd0e13dc35",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a76adb81a0c14ce6ae16b18421469984",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f403ab092a4b4c709a21aaa49c497197",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-026eee6137c34799ac0a1fe8e3cefc1a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-71504d078d39443c801ae99bf0d81fa1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7a8871cf181c497388f30abbc0b603d9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-054c08399a624f7b823f3b8f5f4e612b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-27bae4c0ba27468eb2c6e09a7251d16d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a8944f7f59b943228d64d83b7428caa0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-305b624c7612402fa0b7c7c2464694cc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-27c2c1b4db8748f394d7ec612bf0ac33",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-00212162ec234e81a8f9274d7c9a85d2",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-671c6173f6cf4b489c1cd9bee0cca519",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-237fc188faa44250a488a2ae809d34e8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6248a779002b4454b3493e7553b99d49",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a23959a66506488a952c2aace7627c39",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3ea29a0e480449b6afcf0106f48e3d83",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-325bf433414c4b698ce5e6ec41e1a44d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ce77e5bfde1d4560969cbcbafc93a241",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             }
-          ]
+          ],
+          "keywords_must": [],
+          "keywords_forbid": []
         }
       },
       {
@@ -3659,283 +4922,365 @@
                     "exercises": {
                       "node_id": "dailycode-b6d28853f68d4a5c842f4d1329b51b95",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-11c2226bae91486682a9bd27df4047b5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f77c8eab81bd4f33b5a86ef896683c1a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f65da56d7cc24a039bf82c904df55f58",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-70c36c9a7d99475c87b427df4b2fe285",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5796b5e24b034f8485f278d8ea6b2674",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-78ef1609cd054f0e8405c97d76ef6dfa",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7798b34864d141ac9f37b317b0907ceb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3224725bf9304f5ea5f91480fa9bc974",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4e0793b3767449d58122e2c9a97f0bac",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-43ca27b263d047aebb7b4cb0e86d7f8a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ea953e17f9ec4cd7aa1341f7892c60f6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c11894f51cc0474ba829f36a11133691",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8190a9a91ce54eef9e371ce1dcecad04",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4dd43c582c5f499b9f30071512adce42",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9a4408230ad9414ca2c6ae393d6dfc0c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ef701b1245294488a29c1d7609ccc901",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c03b1ceef1b24852b191ba1208ae6903",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-931e77e54385459da6bd004f6f13b187",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-12154716a86a4a3996629c7ffe33e922",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6c1fc61550b048c696cf72b285cbca33",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-379fe0110ce244ed9109860976c01206",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-71a29d2d4ba84ef5862dbcd1547a8d0c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-ec2dc76044e44a3ca30eabe97355ea63",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4522f669896d4e32bae4b5a741d160ad",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-569fed9589644294ae5ef549b7babf31",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9f07bfe91c6f4ca484f92a7a49912a66",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b7c191c627974320b5a16024eb016358",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a1becf27311a4e77a4c9cc59c8847eef",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4cfdb4abcc864c1ba3c3b08cc1884f6b",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-9c4fc46e655e473c8b1fa86ebaa44589",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-7568d52f35704930b597b69901e61ae6",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-da88752f950b47bdbbb804a8ce1489c0",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-26802d77cb99478bbd3754edb14e4d05",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a84cd69409ca4eb6b4ce004ce6cb68f4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-614de2b516c846b88756982c0408dde8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d1dc9f58aa4b411886252ef1dbc58060",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-29a75c30bfa34e84a2c372b6e931a7a5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-eef9a0612cff417fbb8eb4fedfb899db",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-3a1bc738c17a4209a24f20e6284146dd",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             },
             {
@@ -3947,143 +5292,185 @@
                     "exercises": {
                       "node_id": "dailycode-55c7a4e268dc4124978b79a1c91c02b3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f08ed7a411b948daa662d0e8cd0a0948",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-68470d3e20c241688ad0845c6625335a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-b18ab4eee6fa4810bde94c8fdb529674",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-71a1af0422c54a1a9fa6959b4dcb04fc",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2b10d595b0864b389f2455cd580078d3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-409cdde69271474ba4fa13f4d4e49b85",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c428b0172c424f6da1ad761783cbaf41",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f0f4aec713b24926bd8c1a5761778352",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-4e7d2bc6a18f42668b4b2868a7730ced",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-bb85e8f3aec14d48b767f728bdf1dc51",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e3a7c5b5f5724a47a7de4643ceb4b4d4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-412b8eb337ab4e35a1dea7bda02d89f9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-31ce5d5a421d458cae9da5be0998199a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2e20527b423d41d8881886b6316e28a9",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-d3e358bffc0840129e126f8cfdc2ec90",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8e1e5071f1df4857ab3fbc97910498be",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cb66e1d1a6c34674889f140de4b21ac1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c3538ac1b9744b19b8a09ca75457aec4",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-a17a04b98de344dd8c8ee681f8bb05d8",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             },
             {
@@ -4095,155 +5482,203 @@
                     "exercises": {
                       "node_id": "dailycode-140f8cff6c77471a9b56168e6219d7e3",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-828f879aa4b94b1d94ca7f29fc5f0840",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-01b66c5c03b24bc481051d8174578a87",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-877406b98b004e5eb7a935d6fb6cb8eb",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-90915356290f498093aa1edd5800a16c",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-2d90a7f71a184ca5b832014fbd0e2f9a",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-f78142066f114cceaa4d98d295572289",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e6c251f64e884847ae8462cb272f80aa",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-14e58eaa246544eb84ce3a248790784d",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-fb770b2715ca4e9ba76c2cd455ef8578",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-e6620e8ed01649a5b82d5c3f59a366b7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-cf56d018344b4d6598b49593f567d8ec",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-6b7661f648ca47c7a6daec82ae8020f1",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-577a3d8df74848e391bf6890d6855847",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-892f8f04d7154058aee79eb497f262e5",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-538a403bc6c44b689f7624acc3774c21",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-5f24715d54db4e4ba085425cb63c0fa7",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-43a60df3112046ceabce5a6c72c802af",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-c3fbc3654d0649a09f019aa4b33abf91",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-8d8d61cba07e4ef6bff998974a1683ea",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   },
                   {
                     "exercises": {
                       "node_id": "dailycode-30ac3c32bd5643fdb9bce73dc8740969",
                       "keywords": [],
-                      "children": []
+                      "children": [],
+                      "keywords_must": [],
+                      "keywords_forbid": []
                     }
                   }
-                ]
+                ],
+                "keywords_must": [],
+                "keywords_forbid": []
               }
             }
-          ]
+          ],
+          "keywords_must": [],
+          "keywords_forbid": []
         }
       }
-    ]
+    ],
+    "keywords_must": [],
+    "keywords_forbid": []
   }
 }
\ No newline at end of file
diff --git a/helper.py b/helper.py
index 5c30df6e9426b11dd2006a6fe5bbb296bfee1a68..30f768bd81f247091c622ae7515c9732d745cc57 100644
--- a/helper.py
+++ b/helper.py
@@ -419,5 +419,24 @@ def update_author_key():
 
 
 
-update_author_key()
-# classify_leetcode()
\ No newline at end of file
+# update_author_key()
+# classify_leetcode()
+
+def update_config():
+    data_dir = 'data'
+    files = get_files_path(data_dir, '.json')
+    for file in files:
+        if file.find('config') != -1:
+            print(file)
+            with open(file, 'r') as f:
+                data = json.load(f)
+            data['keywords_must'] = []
+            data['keywords_forbid'] = []
+            save_json = json.dumps(data, ensure_ascii=False, indent=2)
+            with open(file, 'w') as f:
+                f.write(save_json)
+
+
+        
+
+update_config()
\ No newline at end of file
diff --git a/main.py b/main.py
index dc93161655eb0d55fe82f3542909a26dd0240417..fe83ca611b50f1a69ee34d582f7b8d21e435eada 100644
--- a/main.py
+++ b/main.py
@@ -2,5 +2,5 @@
 from src.tree import TreeWalker
 
 if __name__ == '__main__':
-    walker = TreeWalker("data", "dailycode", "dailycode")
+    walker = TreeWalker("data", "dailycode", "dailycode", enable_notebook=True, ignore_keywords=True)
     walker.walk()