a:6:{i:0;s:10749:"				<div class="h1"><h1>Nainital Corbett Tour (04 Nights/05 Days)</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.chaturveditravels.com/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>Nainital Corbett Tour (04 Nights/05 Days)</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Tour Code </td>
						<td class="p5px pl0px vat">CTT32 Nainital Corbe</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Nainital</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 16599 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.chaturveditravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Nainital Corbett Tour (04 Nights/05 Days) - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="27834"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					2 Nights Nainital - 2 Nights CorbettAny Airfare, Train Fare, Overland Journey Which Is Not Mentioned In The Itinerary.<br />
Any Personal Nature Items Like Laundry, Bar Bills, Table Bills, Camera Fee, Tips Or Any Other Item.<br />
Guide / Entry Fees / Boatings /Horse Ridings Etc. During Sight Seeings<br />
Any Medical /Rescue Evacuation Due To Mishaps. <br />
Optional Activities Mentioned In The Itinerary <br />
Any Other Things That Is Not Included In The Package Cost Includes Column.<br><br>Note:<br />
Any Changes In Govt. Taxes, Hotel Tariff, Etc Will Be Intimated Before Confirming The Package. <br />
Cost Incidental To Any Change In The Itinerary/ Stay On Account Of Flight Cancellation Due To Bad Weather, Ill Health, Roadblocks And/Or Any Factors Beyond Control. <br />
Government Service Tax @ 3.09 Extra <br />
Every Passenger Is Traveling On His Own Responsibility. The Company Will Not Be Responsible For Any Loss Of Luggage Or Any Accidents. We Are Not Responsible For Theft Or Damage To Your Luggage.<br />
Also Note That Video & Audio Systems Are Prohibited In Commercial Vehicles As Per Law And We Do Not Guarantee For It Always.<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Delhi - Nainital (320 - 7 Hrs)
								</p>
								<p class="aj">Travel by surface from Delhi to Nainital the most beautiful hill station of Kumaon. <br />
Nainital : is referred to as the lake of three sages, or the Tri Rishi Sarovar as mentioned in the Manas Khand chapter of the Skanda Purana. As recorded in history, the three sages, Atri, Pulastya, and Pulaha stopped over at Nainital on their pilgrimage, to quench their thirst. Finding no water, they dug a hole and transferred some water into it to from the sacred lake of Tibet, Mansarovar. Thus the famous lake of Nainital came into existence. Another legend has it that the left eye or Nain of Lord Shiva’s wife Sati fell in this center and formed an emerald eye shaped lake, and thus emerged the city of Nainital.Recent history records reveal that Nainital was brought into limelight by P. Barron, a British sugar merchant, in 1839. The beauty of Nainital with the central lake cushioned among the forests attracted this person to build a house named Pilgrim’s Cottage and settle in Nainital.<br />
Arrive at Nainital transfer to hotel, Check in to hotel .Evening you will walk to Naini Lake and Mall road.then free for leisure. Overnight stay at hotel at Nainital.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Nainital
								</p>
								<p class="aj">After breakfast enjoy at Nainital. Nainital is a glittering jewel in the Himalyan necklace, blessed with scenic natural spledour and varied natural resources. Dotted with lakes, Nainital has earned the epithet of 'Lake District' of India. The most prominent of the lakes is Naini lake ringed by hills. Nainital has a varied topography. visit to lakes tour of Bhim Tal, Sat Tal, Naukuchia Tal , Snow point,Thandi sadak, cable car & Mall road. Later back to hotel,free Rest of the day free at leisure , overnight stay at hotel at  Nainital.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Nainital - Corbett(140 kms - 3 hrs)
								</p>
								<p class="aj">After breakfast, check out from hotel then drive to Corbett national park.<br />
<br />
Corbett National park: A promosing land for the world species at Ramnagar in Nainital distric in uttarakhand.The Corbett national park is the most dwindling part of nature resising at the himalayal foot hill & Shivalik ranges and is being called as the perfect tigers land.indias first notised wildlife sanctuary and national park established in the year 1936,brings opportunity to be hold the largest tigers population in the vicinity.corbett remains open to mid nov to mid jun,the main reason for closure of the park during the rest of the year is that mansoon make most of the roads get washed away.After mansoon, the repaire work start and it is only by nov.That roads are back in motive conditions.<br />
On arrival at Corbett transfer to hotel,checkin to hotel.Rest of the day free at leisure overnight stay at hotel at Corbett.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Corbett
								</p>
								<p class="aj">After breakfast, visits to Jim Park Corbett, Elephant safari (Optional by paying Additional cost).Later back to hotel, Rest of the day free at leisure, overnight stay at hotel at Corbett.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Corbett - Delhi(296 - 7hrs)
								</p>
								<p class="aj">After breakfast, check out from hotel drive to Delhi for onward destination.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Any Airfare, Train Fare, Overland Journey Which Is Not Mentioned In The Itinerary.</li><li>
Any Personal Nature Items Like Laundry, Bar Bills, Table Bills, Camera Fee, Tips Or Any Other Item.</li><li>
Guide / Entry Fees / Boatings /Horse Ridings Etc. During Sight Seeings</li><li>
Any Medical /Rescue Evacuation Due To Mishaps. </li><li>
Optional Activities Mentioned In The Itinerary </li><li>
Any Other Things That Is Not Included In The Package Cost Includes Column.<br><br>Note:</li><li>
Any Changes In Govt. Taxes, Hotel Tariff, Etc Will Be Intimated Before Confirming The Package. </li><li>
Cost Incidental To Any Change In The Itinerary/ Stay On Account Of Flight Cancellation Due To Bad Weather, Ill Health, Roadblocks And/Or Any Factors Beyond Control. </li><li>
Government Service Tax @ 3.09 Extra </li><li>
Every Passenger Is Traveling On His Own Responsibility. The Company Will Not Be Responsible For Any Loss Of Luggage Or Any Accidents. We Are Not Responsible For Theft Or Damage To Your Luggage.</li><li>
Also Note That Video & Audio Systems Are Prohibited In Commercial Vehicles As Per Law And We Do Not Guarantee For It Always.</li></ul><br />
												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.chaturveditravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Nainital Corbett Tour (04 Nights/05 Days) - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="27834"/>
						</form>
						</div>
						
						";i:1;s:80:"Book Nainital Corbett Tour (04 Nights/05 Days) - 4 Nights / 5 Days Tour Packages";i:2;s:139:"book nainital corbett tour (04 nights/05 days) - 4 nights / 5 days tour packages, wildlife and nature tour packages, nainital tour packages";i:3;s:184:"Chaturvedi Travels and Tours offers Nainital Corbett Tour (04 Nights/05 Days) - 4 Nights / 5 Days tour package, budget Wildlife and Nature tour packages for Nainital at exciting price.";i:4;s:1522:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Nainital"        
		                 },
		      "description": "2 Nights Nainital - 2 Nights CorbettAny Airfare, Train Fare, Overland Journey Which Is Not Mentioned In The Itinerary.
Any Personal Nature Items Like Laundry, Bar Bills, Table Bills, Camera Fee, Tips Or Any Other Item.
Guide / Entry Fees / Boatings /Horse Ridings Etc. During Sight Seeings
Any Medical /Rescue Evacuation Due To Mishaps. 
Optional Activities Mentioned In The Itinerary 
Any Other Things That Is Not Included In The Package Cost Includes Column.<br><br>Note:
Any Changes In Govt. Taxes, Hotel Tariff, Etc Will Be Intimated Before Confirming The Package. 
Cost Incidental To Any Change In The Itinerary/ Stay On Account Of Flight Cancellation Due To Bad Weather, Ill Health, Roadblocks And/Or Any Factors Beyond Control. 
Government Service Tax @ 3.09 Extra 
Every Passenger Is Traveling On His Own Responsibility. The Company Will Not Be Responsible For Any Loss Of Luggage Or Any Accidents. We Are Not Responsible For Theft Or Damage To Your Luggage.
Also Note That Video & Audio Systems Are Prohibited In Commercial Vehicles As Per Law And We Do Not Guarantee For It Always.",
		      "name": "Nainital Corbett Tour (04 Nights/05 Days)",
		      "telephone": "+91-9826355115"
		    }
		    </script>
			";i:5;N;}