using System;
using static System.Console;
using static System.Math;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TemplateAlgorithm
{

    /// <summary>
    /// 素集合(UnionFindTree)
    /// </summary>
    class DisjointSet
    {
        public List<int> Rank { get; set; }
        public List<int> Parent { get; set; }

        public DisjointSet()
        {
            Rank = new List<int>();
            Parent = new List<int>();
        }

        public DisjointSet(int size)
        {
            Rank = Enumerable.Repeat(0, size).ToList();
            Parent = Enumerable.Repeat(0, size).ToList();

            for (var i = 0; i < size; i++) { MakeSet(i); }
        }

        public void MakeSet(int x)
        {
            this.Parent[x] = x;
            this.Rank[x] = 0;
        }

        public int FindSet(int x)
        {
            if (!IsRoot(x))
            {
                Parent[x] = FindSet(Parent[x]);
            }
            return Parent[x];
        }

        public void Unite(int x, int y)
        {
            x = FindSet(x);
            y = FindSet(y);

            if (Rank[x] > Rank[y])
            {
                Parent[y] = x;
            }
            else
            {
                Parent[x] = y;
                if (Rank[x] == Rank[y])
                {
                    Rank[y]++;
                }
            }
        }

        public bool IsSame(int x, int y) => FindSet(x) == FindSet(y);

        public bool IsRoot(int x) => x == Parent[x];
    }

    class Program
    {
        public const long Inf = (long)1e18;
        public const double eps = 1e-6;
        public const string alfa = "abcdefghijklmnopqrstuvwxyz";
        public const string ALFA  = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        public const int MOD = 1000000007;

        static void Main(string[] args)
        {
            int n = IO.ReadInt();
            int[] data = IO.ReadIntArr();


            double d = 0;
            for (var i = 0; i < n; i++)
            {            
                d += (double)1 / data[i];
            }
            IO.Cout(1.0/d);
        }

        #region MIN,MAX

        /// <summary>
        /// 最大値を返す
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="vals"></param>
        /// <returns></returns>
        public static T MaxValue<T>(params T[] vals) => vals.Max();

        /// <summary>
        /// 最小値を返す
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="vals"></param>
        /// <returns></returns>
        public static T MinValue<T>(params T[] vals) => vals.Min();
        #endregion

        #region IO

        /// <summary>
        /// IO
        /// </summary>
        public class IO
        {
            public static string ReadStr(bool isTrim = false) => (isTrim) ? Console.ReadLine().Trim() : Console.ReadLine();
            public static int ReadInt() => int.Parse(ReadStr());
            public static uint ReadUInt() => uint.Parse(ReadStr());

            public static long ReadLong() => long.Parse(ReadStr());
            public static ulong ReadULong() => ulong.Parse(ReadStr());

            public static decimal ReadDecimal() => decimal.Parse(ReadStr());
            public static double ReadDouble() => double.Parse(ReadStr());
            public static string[] ReadStrArr(char separator = ' ') => Console.ReadLine().Split(separator);
            public static int[] ReadIntArr() => Array.ConvertAll(ReadStrArr(), int.Parse);
            public static long[] ReadLongArr() => Array.ConvertAll(ReadStrArr(), long.Parse);

            public static ulong[] ReadULongArr() => Array.ConvertAll(ReadStrArr(), ulong.Parse);

            public static decimal[] ReadDecimalArr() => Array.ConvertAll(ReadStrArr(), decimal.Parse);
            public static double[] ReadDoubleArr() => Array.ConvertAll(ReadStrArr(), double.Parse);
            
            public static void Cout<T>(T value) => Console.WriteLine(value);
            public static void CoutJoin<T>(T[] values, string separator = " ") => Cout(string.Join(separator, values));
        }

        #endregion();
    }
}


Measured memory_bytes: 11220