#include // ver2.4.4 #include //#include //#include #define fmin brent_find_minima #define int long long #define endl "\n" #define ALL(v) (v).begin(),(v).end() #define COUNT(a,k) upper_bound(ALL(a),k)-lower_bound(ALL(a),k) #define BIGGER(a,k) a.end()-upper_bound(ALL(a),k) #define SMALLER(a,k) lower_bound(ALL(a),k)-a.begin() #define Vi vector #define VVi vector #define VVVi vector #define Vm vector #define Vs vector #define Pii pair #define Pdd pair #define VPii vector #define Tiii tuple #define VTiii vector #define PQi priority_queue #define PQir priority_queue,greater> #define pb push_back #define mp make_pair #define mt make_tuple #define itos to_string #define stoi stoll #define FI first #define SE second #define cYES cout<<"YES"<()) #define rep(i,a,b) for(int i=a;i=b;i--) #define dem(a,b) ((a+b-1)/(b)) #define Vin(a) rep(iI,0,a.size())cin>>a[iI] #define INF 3000000000000000000 // 3.0*10^18(MAXの1/3くらい) #define MAX LLONG_MAX #define PI 3.141592653589793238462 #define MOD 1000000007 // 10^9 + 7 using namespace std; /* fmin(f,L,R,100) で関数の最小値を(x,min)で返す */ //using boost::math::tools::brent_find_minima; /* cpp_int (任意の長さのint) */ //using boost::multiprecision::cpp_int; /* デバッグ用 */ void Vout(auto a){if(a.size()==0) cout<<"."<0)cout<0)cerr<n)return 0;if((n-r)n-r;--i){a=a*i;}for(int i=1;in)return 0;if((n-r)n-r;--i){a=a*i%MOD;}for(int i=1; i> a >> b; int g = gcd(a,b); if(g!=1){ cout << -1 << endl; return 0; } cout << (a-1)*(b-1)/2 << endl; return 0; }