{
	// Place your acm 工作区 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and 
	// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope 
	// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is 
	// used to trigger the snippet and the body will be expanded and inserted. Possible variables are: 
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. 
	// Placeholders with the same ids are connected.
	// Example:
	// "Print to console": {
	// 	"scope": "javascript,typescript",
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
	"ICPC Starndard Header C++98": {
		"scope": "c,cpp",
		"prefix": "acm98",
		"body": [
			"#define _CRT_SECURE_NO_WARNINGS",
			"#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING",
			"#ifdef ONLINE_JUDGE",
			"#include <algorithm>",
			"#include <bitset>",
			"#include <cctype>",
			"#include <cerrno>",
			"#include <cfloat>",
			"#include <ciso646>",
			"#include <climits>",
			"#include <clocale>",
			"#include <cmath>",
			"#include <complex>",
			"#include <csetjmp>",
			"#include <csignal>",
			"#include <cstdarg>",
			"#include <cstddef>",
			"#include <cstdio>",
			"#include <cstdlib>",
			"#include <cstring>",
			"#include <ctime>",
			"#include <cwchar>",
			"#include <cwctype>",
			"#include <deque>",
			"#include <exception>",
			"#include <fstream>",
			"#include <functional>",
			"#include <iomanip>",
			"#include <ios>",
			"#include <iosfwd>",
			"#include <iostream>",
			"#include <istream>",
			"#include <iterator>",
			"#include <limits>",
			"#include <list>",
			"#include <locale>",
			"#include <map>",
			"#include <memory>",
			"#include <new>",
			"#include <numeric>",
			"#include <ostream>",
			"#include <queue>",
			"#include <set>",
			"#include <sstream>",
			"#include <stack>",
			"#include <stdexcept>",
			"#include <streambuf>",
			"#include <string>",
			"#include <typeinfo>",
			"#include <utility>",
			"#include <valarray>",
			"#include <vector>",
			"typedef long long int64_t;",
			"typedef unsigned long long uint64_t;",
			"#else",
			"#include <bits/stdc++.h>",
			"#endif",
			"using namespace std;",
			"#define CRP(t, x) const t &x",
			"#define OPX(op, t, x) operator op(CRP(t, x))",
			"#define OPL(t, x) bool OPX(<, t, x) const",
			"#define FIL(x, v) memset(x, v, sizeof(x))",
			"#define CLR(x) FIL(x, 0)",
			"#define NE1(x) FIL(x, -1)",
			"#define INF(x) FIL(x, 0x3f)",
			"#ifndef _DEBUG",
			"#define _DEBUG 0",
			"#endif // !_DEBUG",
			"#define IFD if (_DEBUG)",
			"typedef int64_t ll, i64;",
			"typedef uint64_t ull, u64;",
			"inline char getchar(int)",
			"{",
			"    static char buf[64 << 20], *S = buf, *T = buf;",
			"    if (S == T) T = fread(S = buf, 1, 64 << 20, stdin) + buf;",
			"    return S == T ? EOF : *S++;",
			"}",
			"template <typename T>",
			"inline bool read(T &x)",
			"{",
			"    int ch = x = 0, f = 1;",
			"    while (!isdigit(ch = getchar()))",
			"        if (ch == EOF)",
			"            return false;",
			"        else if (ch == '-')",
			"            f = 0;",
			"    for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0';",
			"    return x = f ? x : -x, true;",
			"}",
			"template <typename T1, typename T2>",
			"inline bool read(T1 &v1, T2 &v2) { return read(v1) && read(v2); }",
			"template <typename T1, typename T2, typename T3>",
			"inline bool read(T1 &v1, T2 &v2, T3 &v3) { return read(v1) && read(v2) && read(v3); }",
			"template <typename T1, typename T2, typename T3, typename T4>",
			"inline bool read(T1 &v1, T2 &v2, T3 &v3, T4 &v4) { return read(v1) && read(v2) && read(v3) && read(v4); }",
			"template <typename T1, typename T2, typename T3, typename T4, typename T5>",
			"inline bool read(T1 &v1, T2 &v2, T3 &v3, T4 &v4, T5 &v5) { return read(v1) && read(v2) && read(v3) && read(v4) && read(v5); }",
			"inline ll gcd(ll a, ll b)",
			"{",
			"    for (; b; swap(a, b)) a %= b;",
			"    return a;",
			"}",
			"inline ll fpow(ll a, ll b, ll m)",
			"{",
			"    ll r = 1;",
			"    for (; b; b >>= 1, a = a * a % m)",
			"        if (b & 1) r = r * a % m;",
			"    return r;",
			"}",
			"const double eps = 1e-8;",
			"inline int sgn(double x) { return x > eps ? 1 : x < -eps ? -1 : 0; }",
			"int main()",
			"{",
			"    $0",
			"    return 0;",
			"}",
		]
	}
}