
//*****************************************************************************
//*     __      ________        __________         __________      __      __ *
//*    |  |    |        |      ||_________|       ||________|      ||      || *
//*    |  |    |        |      ||                 ||               ||      || *
//*    |  |    |________|      ||                 ||               ||      || *
//*    |  |    |________|      ||     ______      ||      ______   ||      || *
//* ___|  |    |        |      ||____| | | |      ||_____| | | |   ||______|| *
//*|______|    |        |      ||______| |_|      ||_______| |_|   ||______|| *
//*                                                                           *
//******************************************************************************
#include<bits/stdc++.h> 

using namespace std; 
typedef long long ll; 
typedef long double ld; 
#define f(i,a,b) for(ll i=a;i<b;i++) 
#define prnt(a) for(auto _:a) {cout<<_<<' ';}cout<<endl; 
#define prnt_map(a) for(auto x : a) {cout<<x.first<<' '<<x.second; cout<<endl;} 
#define lower(a) transform(a.begin(),a.end(),a.begin(),::tolower) 
#define upper(a) transform(a.begin(),a.end(),a.begin(),::toupper) 
#define pll pair<ll,ll> 
#define int long long 
#define umap unordered_map
#define vi vector< long long > 
#define vec_read(x) for(auto &i:x) cin>>i; 
#define str string 
#define mp make_pair 
#define mt make_tuple 
#define eb emplace_back  
#define pb push_back 
#define min_(a) *min_element(a.begin(),a.end()) 
#define max_(a) *max_element(a.begin(),a.end()) 
#define all(a) a.begin(),a.end() 
#define rall(a) a.rbegin(),a.rend() 
#define deb(x) cout << #x << ' ' << x << endl; 
#define se second 
#define fi first 
#define si size 
#define MOD ll(1e9+7) 
template<typename... T> 
void read(T&... args) { 
    ((cin>>args), ...); 
} 
template<typename... T> 
void print(T... args) { //rvalue reference is new to C++ 
    ((cout<<args<<' '), ...); 
    cout<<endl; 
}
int msb(int N) {
    return N ? 32 - __builtin_clz(N) : -MOD;
}
//....................................
void solve(){ 
	//WRITE YOUR CODE HERE.....
	ld r,x,y; read(r,x,y);
	ld dis = (ld)sqrt(pow(x,2)+pow(y,2));
	if (dis<r) print(2);
	else print(ceil(dis/r));
}
void test_case(){ 
    int testCase; 
    cin>>testCase; 
    while(testCase--) solve();
} 
int32_t main() { 
    ios_base::sync_with_stdio(false); 
    cin.tie(NULL); 
    // test_case(); 
      solve(); 
    return 0; 
}

#include <bits/stdc++.h>
#define fi first
#define se second
#define sz(v) ((int)v.size())
#define all(v) (v).begin(), (v).end()
#define pb push_back
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
template<int mod>
struct modint{
	int v;
	modint(ll vv=0){s(vv%mod+mod);}
	modint& s(int vv){
		v=vv<mod?vv:vv-mod;
		return *this;
	}
	modint operator-()const{return modint()-*this;}
	modint& operator+=(const modint&rhs){return s(v+rhs.v);}
	modint&operator-=(const modint&rhs){return s(v+mod-rhs.v);}
	modint&operator*=(const modint&rhs){
		v=ll(v)*rhs.v%mod;
		return *this;
	}
	modint&operator/=(const modint&rhs){return *this*=rhs.inv();}
	modint operator+(const modint&rhs)const{return modint(*this)+=rhs;}
	modint operator-(const modint&rhs)const{return modint(*this)-=rhs;}
	modint operator*(const modint&rhs)const{return modint(*this)*=rhs;}
	modint operator/(const modint&rhs)const{return modint(*this)/=rhs;}
	modint pow(int n)const{
		modint res(1),x(*this);
		while(n){
			if(n&1)res*=x;
			x*=x;
			n>>=1;
		}
		return res;
	}
	modint inv()const{return pow(mod-2);}
	/*modint inv()const{
		int x,y;
		int g=egcd(v,mod,x,y);
		assert(g==1);
		if(x<0)x+=mod;
		return modint(x);
	}*/
	friend modint operator+(int x,const modint&y){return modint(x)+y;}
	friend modint operator-(int x,const modint&y){return modint(x)-y;}
	friend modint operator*(int x,const modint&y){return modint(x)*y;}
	friend modint operator/(int x,const modint&y){return modint(x)/y;}
	friend ostream& operator<<(ostream&os,const modint&m){return os<<m.v;}
	friend istream& operator>>(istream&is,modint&m){
		ll x;is>>x;
		m=modint(x);
		return is;
	}
	bool operator<(const modint&r)const{return v<r.v;}
	bool operator==(const modint&r)const{return v==r.v;}
	bool operator!=(const modint&r)const{return v!=r.v;}
	explicit operator bool()const{return v;}
};
using mint=modint<998244353>;
int n,a[200010];
mint pw[200010];
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n;
	int i,j;
	pw[0]=1;
	for(i=1;i<=n;i++)pw[i]=pw[i-1]*2;
	for(i=1;i<=n;i++)cin>>a[i];
	sort(a+1,a+n+1);
	mint ans,sum;
	for(i=1;i<=n;i++) {
		// a[i]*a[j]*2^(i-j-1)=a[i]*2^i * a[j]*2^(-j-1)
		ans+=a[i]*pw[i]*sum+mint(a[i])*mint(a[i]);
		sum+=a[i]*pw[i+1].inv();
	}
	cout<<ans.v;
	return 0;
}