#include <bits/stdc++.h>
using namespace std;
void printArray(long long int* nums, int size);
void swap(long long int* a, long long int* b);
int partition(long long int* nums, int low, int high);
void quicksort(long long int* nums, int low, int high);
int main() {
  long long int maxCap = 0;
  long long int secMaxCap = 0;
  long long int sumRemain = 0;
  int n;
  cin >> n;
  long long int *remain = (long long int*)malloc(n * sizeof(long long int)),
                *capacity = (long long int*)malloc(n * sizeof(long long int));
  for (int i = 0; i < n; i++) {
    cin >> remain[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> capacity[i];
  }
  for (int i = 0; i < n; i++) {
    int temp = capacity[i];
    if (temp > maxCap) {
      secMaxCap = maxCap;
      maxCap = temp;
    } else if (temp > secMaxCap) {
      secMaxCap = temp;
    }
  }
  for (int i = 0; i < n; i++) {
    sumRemain += remain[i];
  }
  if (maxCap + secMaxCap >= sumRemain) {
    cout << "YES";
    return 0;
  }
  cout << "NO";
  return 0;
}
void printArray(long long int* nums, int size) {
  for (int i = 0; i < size; i++) {
    cout << nums[i] << " ";
  }
  cout << endl;
}
void swap(long long int* a, long long int* b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}
int partition(long long int* nums, int low, int high) {
  long long int pivot = nums[high];
  int crawler = low - 1;
  for (int j = low; j < high; j++) {
    if (nums[j] <= pivot) {
      crawler++;
      swap(&nums[crawler], &nums[j]);
    }
  }
  swap(&nums[high], &nums[crawler + 1]);
  return crawler + 1;
}
void quicksort(long long int* nums, int low, int high) {
  if (low < high) {
    int pi = partition(nums, low, high);
    quicksort(nums, low, pi - 1);
    quicksort(nums, pi + 1, high);
  }
}
