#include<unordered_map>
#include<unordered_set>
#include<functional>
#include<algorithm>
#include<iostream>
#include<hash_map>
#include<iterator>
#include<iomanip>
#include<numeric>
#include<cstring>
#include<vector>
#include<bitset>
#include<string>
#include<deque>
#include<stack>
#include<queue>
#include<array>
#include<cmath>
#include<list>
#include<map>
#include<set>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
#define ordered_set tree<ll, null_type,less_equal<ll>, \
rb_tree_tag,tree_order_statistics_node_update>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define inf INT32_MAX
#define linf INT64_MAX
#define pf push_front
#define pb push_back
#define ppb pop_back
#define ppf pop_front
#define ff first
#define ss second
const int mod=998244353,N=2e5+5;
/*ECPC 2021 ISA-*/
ll Pow(ll b,ll p){
if(!p)return 1;
if(p==1)return b;
ll tmp=Pow(b,p/2);
tmp=(tmp*tmp);
if(p&1)tmp=(tmp*b);
return tmp;
}
bool slv(){
ll n,ans=0;
cin>>n;
vector<ll>a(n),b(n);
for(auto &i:a)cin>>i;
for(auto &i:b)cin>>i;
for(int i=0;i<n;++i){
a[i]=a[i]*(i+1)*(n-i);
}
sort(b.begin(),b.end());
sort(a.rbegin(),a.rend());
for(int i=0;i<n;++i){
ll temp=(a[i]*b[i])%mod;
ans=(ans+temp)%mod;
}
cout<<ans;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int t=1;
//cin>>t;
while(t--){
slv();
}
}
I2luY2x1ZGU8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGU8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGU8ZnVuY3Rpb25hbD4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8aGFzaF9tYXA+CiNpbmNsdWRlPGl0ZXJhdG9yPgojaW5jbHVkZTxpb21hbmlwPgojaW5jbHVkZTxudW1lcmljPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPGJpdHNldD4KI2luY2x1ZGU8c3RyaW5nPgojaW5jbHVkZTxkZXF1ZT4KI2luY2x1ZGU8c3RhY2s+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxhcnJheT4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPGxpc3Q+CiNpbmNsdWRlPG1hcD4KI2luY2x1ZGU8c2V0PgojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgoKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIGRvdWJsZSBkYjsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZGI7CgojZGVmaW5lIG9yZGVyZWRfc2V0IHRyZWU8bGwsIG51bGxfdHlwZSxsZXNzX2VxdWFsPGxsPiwgXApyYl90cmVlX3RhZyx0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+CiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBwbGwgcGFpcjxsbCxsbD4KI2RlZmluZSBpbmYgSU5UMzJfTUFYCiNkZWZpbmUgbGluZiBJTlQ2NF9NQVgKI2RlZmluZSBwZiBwdXNoX2Zyb250CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcHBiIHBvcF9iYWNrCiNkZWZpbmUgcHBmIHBvcF9mcm9udAojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCgpjb25zdCBpbnQgbW9kPTk5ODI0NDM1MyxOPTJlNSs1OwovKkVDUEMgMjAyMSBJU0EtKi8KbGwgUG93KGxsIGIsbGwgcCl7CiAgICBpZighcClyZXR1cm4gMTsKICAgIGlmKHA9PTEpcmV0dXJuIGI7CiAgICBsbCB0bXA9UG93KGIscC8yKTsKICAgIHRtcD0odG1wKnRtcCk7CiAgICBpZihwJjEpdG1wPSh0bXAqYik7CiAgICByZXR1cm4gdG1wOwp9CmJvb2wgc2x2KCl7CiAgICBsbCBuLGFucz0wOwogICAgY2luPj5uOwoKICAgIHZlY3RvcjxsbD5hKG4pLGIobik7CiAgICBmb3IoYXV0byAmaTphKWNpbj4+aTsKICAgIGZvcihhdXRvICZpOmIpY2luPj5pOwoKICAgIGZvcihpbnQgaT0wO2k8bjsrK2kpewogICAgICAgIGFbaV09YVtpXSooaSsxKSoobi1pKTsKICAgIH0KCiAgICBzb3J0KGIuYmVnaW4oKSxiLmVuZCgpKTsKICAgIHNvcnQoYS5yYmVnaW4oKSxhLnJlbmQoKSk7CgogICAgZm9yKGludCBpPTA7aTxuOysraSl7CiAgICAgICAgbGwgdGVtcD0oYVtpXSpiW2ldKSVtb2Q7CiAgICAgICAgYW5zPShhbnMrdGVtcCklbW9kOwogICAgfQogICAgY291dDw8YW5zOwp9CmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBpbnQgdD0xOwogICAgLy9jaW4+PnQ7CiAgICB3aGlsZSh0LS0pewogICAgICAgIHNsdigpOwogICAgfQp9