Language: C++

#pragma GCC target("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
// #include<ext/pb_ds/assoc_container.hpp>
// #include<ext/pb_ds/tree_policy.hpp>
// #include<ext/pb_ds/tag_and_trait.hpp>
// using namespace __gnu_pbds;
// #include<boost/multiprecision/cpp_int.hpp>
// namespace multiprecisioninteger = boost::multiprecision;
// using cint=multiprecisioninteger::cpp_int;
using namespace std;
using ll=long long;
#define double long double
using datas=pair<ll,ll>;
using ddatas=pair<double,double>;
using tdata=pair<ll,datas>;
using vec=vector<ll>;
using mat=vector<vec>;
using pvec=vector<datas>;
using pmat=vector<pvec>;
// using llset=tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update>;
#define For(i,a,b) for(i=a;i<(ll)b;++i)
#define bFor(i,b,a) for(i=b,--i;i>=(ll)a;--i)
#define rep(i,N) For(i,0,N)
#define rep1(i,N) For(i,1,N)
#define brep(i,N) bFor(i,N,0)
#define brep1(i,N) bFor(i,N,1)
#define all(v) (v).begin(),(v).end()
#define allr(v) (v).rbegin(),(v).rend()
#define vsort(v) sort(all(v))
#define vrsort(v) sort(allr(v))
#define endl "\n"
#define eb emplace_back
#define print(v) cout<<v<<endl
#define printyes cout<<"Yes"<<endl
#define printno cout<<"No"<<endl
#define printYES cout<<"YES"<<endl
#define printNO cout<<"NO"<<endl
#define output(v) do{bool f=0;for(auto outi:v){cout<<(f?" ":"")<<outi;f=1;}cout<<endl;}while(0)
#define matoutput(v) do{for(auto outimat:v)output(outimat);}while(0)
const ll mod=1000000007;
// const ll mod=998244353;
const ll inf=1LL<<60;
const double PI = acos(-1);
const double eps = 1e-9;
template<class T> inline bool chmax(T& a,T b){bool x=a<b;if(x)a=b;return x;} 
template<class T> inline bool chmin(T& a,T b){bool x=a>b;if(x)a=b;return x;} 

void startupcpp(){
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout<<fixed<<setprecision(15);
}

double distance(ddatas x,ddatas y){
  double a=x.first-y.first,b=x.second-y.second;
  return sqrt(a*a+b*b);
}

ll modinv(ll a) {
  ll b=mod,u=1,v=0,t;
  while(b){
    t=a/b;
    a-=t*b; swap(a,b);
    u-=t*v; swap(u,v);
  }
  return (u+mod)%mod;
}

ll moddevide(ll a,ll b){return (a*modinv(b))%mod;}

vec modncrlistp,modncrlistm;

ll modncr(ll n,ll r){
  if(n<r)return 0;
  ll i,size=modncrlistp.size();
  if(size<=n){
    modncrlistp.resize(n+1);
    modncrlistm.resize(n+1);
    if(!size){
      modncrlistp[0]=modncrlistm[0]=1;
      size++;
    }
    For(i,size,n+1){
      modncrlistp[i]=modncrlistp[i-1]*i%mod;
      modncrlistm[i]=modinv(modncrlistp[i]);
    }
  }
  return modncrlistp[n]*modncrlistm[r]%mod*modncrlistm[n-r]%mod;
}

ll modpow(ll a,ll n){
  ll res=1;
  while(n>0){
    if(n&1)res=res*a%mod;
    a=a*a%mod;
    n>>=1;
  }
  return res;
}

ll gcd(ll a,ll b){if(!b)return abs(a);return (a%b==0)?abs(b):gcd(b,a%b);}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}

ll countdigits(ll n){
  ll ans=0;
  while(n){n/=10;ans++;}
  return ans;
}

ll sumdigits(ll n){
  ll ans=0;
  while(n){ans+=n%10;n/=10;}
  return ans;
}

void topcoder(vector<int>& v){
  string s;
  while(1){
    cin>>s;
    int i=s[0]=='{',x=0;
    while(s[i]>='0'&&s[i]<='9'){
      x=x*10+s[i]-'0';
      ++i;
    }
    v.eb(x);
    if(s[i]=='}')break;
  }
}
void topcoder(string& s){
  string t;
  cin>>t;
  int i=1;
  while(t[i]!='"'){
    s+=t[i++];
  }
}
int main(){
  // startupcpp();
  // int codeforces;cin>>codeforces;while(codeforces--){
  ll i,j,N,A,B,ans;
  cin>>N>>A>>B;
  if(N==1){
    print((A==B));
    return 0;
  }
  if(A>B){
    print(0);
    return 0;
  }
  if(A==B){
    print(1);
    return 0;
  }
  print((N-2)*(B-A)+1);
}#pragma GCC target("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
// #include<ext/pb_ds/assoc_container.hpp>
// #include<ext/pb_ds/tree_policy.hpp>
// #include<ext/pb_ds/tag_and_trait.hpp>
// using namespace __gnu_pbds;
// #include<boost/multiprecision/cpp_int.hpp>
// namespace multiprecisioninteger = boost::multiprecision;
// using cint=multiprecisioninteger::cpp_int;
using namespace std;
using ll=long long;
#define double long double
using datas=pair<ll,ll>;
using ddatas=pair<double,double>;
using tdata=pair<ll,datas>;
using vec=vector<ll>;
using mat=vector<vec>;
using pvec=vector<datas>;
using pmat=vector<pvec>;
// using llset=tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update>;
#define For(i,a,b) for(i=a;i<(ll)b;++i)
#define bFor(i,b,a) for(i=b,--i;i>=(ll)a;--i)
#define rep(i,N) For(i,0,N)
#define rep1(i,N) For(i,1,N)
#define brep(i,N) bFor(i,N,0)
#define brep1(i,N) bFor(i,N,1)
#define all(v) (v).begin(),(v).end()
#define allr(v) (v).rbegin(),(v).rend()
#define vsort(v) sort(all(v))
#define vrsort(v) sort(allr(v))
#define endl "\n"
#define eb emplace_back
#define print(v) cout<<v<<endl
#define printyes cout<<"Yes"<<endl
#define printno cout<<"No"<<endl
#define printYES cout<<"YES"<<endl
#define printNO cout<<"NO"<<endl
#define output(v) do{bool f=0;for(auto outi:v){cout<<(f?" ":"")<<outi;f=1;}cout<<endl;}while(0)
#define matoutput(v) do{for(auto outimat:v)output(outimat);}while(0)
const ll mod=1000000007;
// const ll mod=998244353;
const ll inf=1LL<<60;
const double PI = acos(-1);
const double eps = 1e-9;
template<class T> inline bool chmax(T& a,T b){bool x=a<b;if(x)a=b;return x;} 
template<class T> inline bool chmin(T& a,T b){bool x=a>b;if(x)a=b;return x;} 

void startupcpp(){
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout<<fixed<<setprecision(15);
}

double distance(ddatas x,ddatas y){
  double a=x.first-y.first,b=x.second-y.second;
  return sqrt(a*a+b*b);
}

ll modinv(ll a) {
  ll b=mod,u=1,v=0,t;
  while(b){
    t=a/b;
    a-=t*b; swap(a,b);
    u-=t*v; swap(u,v);
  }
  return (u+mod)%mod;
}

ll moddevide(ll a,ll b){return (a*modinv(b))%mod;}

vec modncrlistp,modncrlistm;

ll modncr(ll n,ll r){
  if(n<r)return 0;
  ll i,size=modncrlistp.size();
  if(size<=n){
    modncrlistp.resize(n+1);
    modncrlistm.resize(n+1);
    if(!size){
      modncrlistp[0]=modncrlistm[0]=1;
      size++;
    }
    For(i,size,n+1){
      modncrlistp[i]=modncrlistp[i-1]*i%mod;
      modncrlistm[i]=modinv(modncrlistp[i]);
    }
  }
  return modncrlistp[n]*modncrlistm[r]%mod*modncrlistm[n-r]%mod;
}

ll modpow(ll a,ll n){
  ll res=1;
  while(n>0){
    if(n&1)res=res*a%mod;
    a=a*a%mod;
    n>>=1;
  }
  return res;
}

ll gcd(ll a,ll b){if(!b)return abs(a);return (a%b==0)?abs(b):gcd(b,a%b);}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}

ll countdigits(ll n){
  ll ans=0;
  while(n){n/=10;ans++;}
  return ans;
}

ll sumdigits(ll n){
  ll ans=0;
  while(n){ans+=n%10;n/=10;}
  return ans;
}

void topcoder(vector<int>& v){
  string s;
  while(1){
    cin>>s;
    int i=s[0]=='{',x=0;
    while(s[i]>='0'&&s[i]<='9'){
      x=x*10+s[i]-'0';
      ++i;
    }
    v.eb(x);
    if(s[i]=='}')break;
  }
}
void topcoder(string& s){
  string t;
  cin>>t;
  int i=1;
  while(t[i]!='"'){
    s+=t[i++];
  }
}
int main(){
  // startupcpp();
  // int codeforces;cin>>codeforces;while(codeforces--){
  ll i,j,N,A,B,ans;
  cin>>N>>A>>B;
  if(N==1){
    print((A==B));
    return 0;
  }
  if(A>B){
    print(0);
    return 0;
  }
  if(A==B){
    print(1);
    return 0;
  }
  print((N-2)*(B-A)+1);
}

Compiler output:
a.cc:157:2: error: stray '#' in program
  157 | }#pragma GCC target("avx")
      |  ^
a.cc:157:3: error: 'pragma' does not name a type; did you mean '_Pragma'?
  157 | }#pragma GCC target("avx")
      |   ^~~~~~
      |   _Pragma
a.cc:198:10: error: redefinition of 'const ll mod'
  198 | const ll mod=1000000007;
      |          ^~~
a.cc:42:10: note: 'const ll mod' previously defined here
   42 | const ll mod=1000000007;
      |          ^~~
a.cc:200:10: error: redefinition of 'const ll inf'
  200 | const ll inf=1LL<<60;
      |          ^~~
a.cc:44:10: note: 'const ll inf' previously defined here
   44 | const ll inf=1LL<<60;
      |          ^~~
a.cc:201:14: error: redefinition of 'const long double PI'
  201 | const double PI = acos(-1);
      |              ^~
a.cc:45:14: note: 'const long double PI' previously defined here
   45 | const double PI = acos(-1);
      |              ^~
a.cc:202:14: error: redefinition of 'const long double eps'
  202 | const double eps = 1e-9;
      |              ^~~
a.cc:46:14: note: 'const long double eps' previously defined here
   46 | const double eps = 1e-9;
      |              ^~~
a.cc:203:31: error: redefinition of 'template<class T> bool chmax(T&, T)'
  203 | template<class T> inline bool chmax(T& a,T b){bool x=a<b;if(x)a=b;return x;}
      |                               ^~~~~
a.cc:47:31: note: 'template<class T> bool chmax(T&, T)' previously declared here
   47 | template<class T> inline bool chmax(T& a,T b){bool x=a<b;if(x)a=b;return x;}
      |                               ^~~~~
a.cc:204:31: error: redefinition of 'template<class T> bool chmin(T&, T)'
  204 | template<class T> inline bool chmin(T& a,T b){bool x=a>b;if(x)a=b;return x;}
      |                               ^~~~~
a.cc:48:31: note: 'template<class T> bool chmin(T&, T)' previously declared here
   48 | template<class T> inline bool chmin(T& a,T b){bool x=a>b;if(x)a=b;return x;}
      |                               ^~~~~
a.cc:206:6: error: redefinition of 'void startupcpp()'
  206 | void startupcpp(){
      |      ^~~~~~~~~~
a.cc:50:6: note: 'void startupcpp()' previously defined here
   50 | void startupcpp(){
      |      ^~~~~~~~~~
a.cc:212:8: error: redefinition of 'long double distance(ddatas, ddatas)'
  212 | double distance(ddatas x,ddatas y){
      |        ^~~~~~~~
a.cc:56:8: note: 'long double distance(ddatas, ddatas)' previously defined here
   56 | double distance(ddatas x,ddatas y){
      |        ^~~~~~~~
a.cc:217:4: error: redefinition of 'll modinv(ll)'
  217 | ll modinv(ll a) {
      |    ^~~~~~
a.cc:61:4: note: 'll modinv(ll)' previously defined here
   61 | ll modinv(ll a) {
      |    ^~~~~~
a.cc:227:4: error: redefinition of 'll moddevide(ll, ll)'
  227 | ll moddevide(ll a,ll b){return (a*modinv(b))%mod;}
      |    ^~~~~~~~~
a.cc:71:4: note: 'll moddevide(ll, ll)' previously defined here
   71 | ll moddevide(ll a,ll b){return (a*modinv(b))%mod;}
      |    ^~~~~~~~~
a.cc:229:5: error: redefinition of 'vec modncrlistp'
  229 | vec modncrlistp,modncrlistm;
      |     ^~~~~~~~~~~
a.cc:73:5: note: 'vec modncrlistp' previously declared here
   73 | vec modncrlistp,modncrlistm;
      |     ^~~~~~~~~~~
a.cc:229:17: error: redefinition of 'vec modncrlistm'
  229 | vec modncrlistp,modncrlistm;
      |                 ^~~~~~~~~~~
a.cc:73:17: note: 'vec modncrlistm' previously declared here
   73 | vec modncrlistp,modncrlistm;
      |                 ^~~~~~~~~~~
a.cc:231:4: error: redefinition of 'll modncr(ll, ll)'
  231 | ll modncr(ll n,ll r){
      |    ^~~~~~
a.cc:75:4: note: 'll modncr(ll, ll)' previously defined here
   75 | ll modncr(ll n,ll r){
      |    ^~~~~~
a.cc:249:4: error: redefinition of 'll modpow(ll, ll)'
  249 | ll modpow(ll a,ll n){
      |    ^~~~~~
a.cc:93:4: note: 'll modpow(ll, ll)' previously defined here
   93 | ll modpow(ll a,ll n){
      |    ^~~~~~
a.cc:259:4: error: redefinition of 'll gcd(ll, ll)'
  259 | ll gcd(ll a,ll b){if(!b)return abs(a);return (a%b==0)?abs(b):gcd(b,a%b);}
      |    ^~~
a.cc:103:4: note: 'll gcd(ll, ll)' previously defined here
  103 | ll gcd(ll a,ll b){if(!b)return abs(a);return (a%b==0)?abs(b):gcd(b,a%b);}
      |    ^~~
a.cc:260:4: error: redefinition of 'll lcm(ll, ll)'
  260 | ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
      |    ^~~
a.cc:104:4: note: 'll lcm(ll, ll)' previously defined here
  104 | ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
      |    ^~~
a.cc:262:4: error: redefinition of 'll countdigits(ll)'
  262 | ll countdigits(ll n){
      |    ^~~~~~~~~~~
a.cc:106:4: note: 'll countdigits(ll)' previously defined here
  106 | ll countdigits(ll n){
      |    ^~~~~~~~~~~
a.cc:268:4: error: redefinition of 'll sumdigits(ll)'
  268 | ll sumdigits(ll n){
      |    ^~~~~~~~~
a.cc:112:4: note: 'll sumdigits(ll)' previously defined here
  112 | ll sumdigits(ll n){
      |    ^~~~~~~~~
a.cc:274:6: error: redefinition of 'void topcoder(std::vector<int>&)'
  274 | void topcoder(vector<int>& v){
      |      ^~~~~~~~
a.cc:118:6: note: 'void topcoder(std::vector<int>&)' previously defined here
  118 | void topcoder(vector<int>& v){
      |      ^~~~~~~~
a.cc:287:6: error: redefinition of 'void topcoder(std::string&)'
  287 | void topcoder(string& s){
      |      ^~~~~~~~
a.cc:131:6: note: 'void topcoder(std::string&)' previously defined here
  131 | void topcoder(string& s){
      |      ^~~~~~~~
a.cc:295:5: error: redefinition of 'int main()'
  295 | int main(){
      |     ^~~~
a.cc:139:5: note: 'int main()' previously defined here
  139 | int main(){
      |     ^~~~