a:6:{i:0;s:27168:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>Kausani Nainital Tour</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.himalayancove.com/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="http://www.himalayancove.com/tour-packages.htm" title="Packages">Packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> Kausani Nainital Tour</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
									<div class="fo dt w100"> 
					<div class="dtc vat ttw-detail pr20px pr">					
												<ul class="lsn gallery-slide" id="bxlider_ins">
																	<li>
										<div class="imgFrame m0a dib bdr">
										<div class="imgFrame picBg dtc ac vam lh0">	<a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242764.jpg">
										<div class="imgWidth" style="background-image: url(https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242764.jpg);background-size:cover;background-position:center;"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242764.jpg"  alt="Kausani Nainital Tour" title="Kausani Nainital Tour" class="imga"  />									</div></a>
										</div>
										</div>
										</li>
																	</ul>
												
					<script>
					var $j = jQuery.noConflict();
					var realSlider= $j("ul#bxlider_ins").bxSlider({
					      speed:500,
					      pager:false,
					      auto: true,
					      slideWidth: 450,
					      slideMargin: 0,
					      nextText:'',
					      prevText:'',
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					        changeRealThumb(realThumbSlider,newIndex);
					        
					      }
					      
					    });
					    
					    var realThumbSlider=$j("ul#bxslider-pager").bxSlider({
					      minSlides: 4,
					      maxSlides: 4,
					      slideWidth: 200,
					      slideMargin: 5,
					      moveSlides: 1,
					      pager:false,
					      speed:1000,
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      nextText:'<span></span>',
					      prevText:'<span></span>',
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					
					      }
					    });
					    
					    linkRealSliders(realSlider,realThumbSlider);
					    
					    if($j("#bxslider-pager li").length<5){
					      $j("#bxslider-pager .bx-next").hide();
					    }
					
					// sincronizza sliders realizzazioni
					function linkRealSliders(bigS,thumbS){
					  
					  $j("ul#bxslider-pager").on("click","a",function(event){
					    event.preventDefault();
					    var newIndex=$j(this).parent().attr("data-slideIndex");
					        bigS.goToSlide(newIndex);
					  });
					}
					
					//slider!=$thumbSlider. slider is the realslider
					function changeRealThumb(slider,newIndex){
					  
					  var $thumbS=$j("#bxslider-pager");
					  $thumbS.find('.active').removeClass("active");
					  $thumbS.find('li[data-slideIndex="'+newIndex+'"]').addClass("active");
					  
					  if(slider.getSlideCount()-newIndex>=4)slider.goToSlide(newIndex);
					  else slider.goToSlide(slider.getSlideCount()-4);
					
					}
					
					</script>
					</div>
			        <div class="dtc">
			        <p class="b xlarge mb10px">Kausani Nainital Tour</p>
					
											<p class="mb5px"><b>Duration :</b> 
						5 Nights / 6 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> New Delhi, Nainital, Almora, Kausani, Ranikhet</p>
												<div class="fo mt20px mb20px xxlarge">
						<p class="xxlarge b dif mb2px">Price</p>
						<p class="xxsmall">On Request</p>
						</div>
												<div class="mt12px mb7px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kausani Nainital Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px ts0 xxlarge dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="158480"/>
						</form>
						
												</div>
											<br/>
					</div>       
					</div>
											<div class="mt30px mb30px">
						<div class="b xxlarge mb10px">
								   					Overview
		   											</div>					
						<p class="aj">Kausani Nainital tour Nainital is a glittering jewel in the Himalayn necklace, blessed with scenic natural splendor 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 .a Nainital has a varied topography . Some of the important places in the district are Nainital , Haldwani , Kaladhungi , Ramnagar , Bhowali , Ramgarh , Mukteshwar , Bhimtal , Sattal and Naukuchiatal . Nainital’s unending expense of scenic beauty is nothing short of a romance with awe-inspiring and pristine Mother nature. Located 53 km to the north of Almora, Kausani, is a picturesque hill station famous for its scenic splendor and its spectacular view of the Himalayas. Flanked by the rivers Kosi and Gomti, this small town sits atop the Pingnath Peak. Though Kausani is not as well known as any of the other hill stations, the area is full of deep and dense pine forest, tea gardens and affords a breath taking view of the Himalayan peaks of Trishul, Panchchuli and Nanda Devi. Major attractions around Kausani are the Temple town of Bageshwar situated at the confluence of the river Sarayu and Gomti, the Gandhi Ashram and the Rudradhari falls and caves.Alcohol or Beverage<br />
<br />
Use of Trek Pack<br />
<br />
Group medical kit<br />
<br />
All major group equipments, etc.</p>
						</div>
														<div class="mt30px b xlarge">
												   					Detailed Tour Itinerary
				   													</div>		   
								<br/>
																			<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 1											
											:</b> Delhi - Nainital (320kms – 7hrs)										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												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 the most beautiful hill station of Kumaon. On arrival at Nainital transfer to hotel, Check in to hotel and rest of the day free for leisure. Evening you will walk to Naini Lake and Mall road. Overnight stay at Hotel at Nainital.															
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 2											
											:</b> Nainital										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After breakfast, Full day is at leisure to explore the hill retreat of Nainital. It is blessed with scenic natural splendor and varied natural resources . Visit to lakes tour of Bhim Tal, Sat Tal, Naukuchia Tal , Snow point Mall road, Boating Club, Cable Car Ride & Thandi Sadak etc.Later back to hotel. Rest of the day free at leisure.Overnight stay at hotel at Nainital.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 3											
											:</b> Nainital - Ranikhet (70kms – 2hrs.)										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After breakfast, drive to Ranikhet. 'The Queens Field', Ranikhet: The salubrious atmosphere, tall conifer trees, green meadows and placid surroundings makes Ranikhet a unique hill station. The magnetism of each season in Ranikhet is always capable of luring tourists, making it an all season destination. The majestic Himalayas, lush green forests, sounds and smell of the flora and fauna leaves an unforgettable impact on the visitors. worth watching excursions, ancient temples, fascinating picnic spots and exciting treks. Ranikhet also headquarters one of the glorious regiment of Indian Army - Kumaon Regiment.Ranikhet literally means “Queen's Meadow”. It is believed that Queen Padmini of Kumaon was in love with this tiny hill paradise. Kind Sudhardev had to oblige her by building a palace here and named this place Ranikhet, the queen’s field. sss Arrive at ranikhet transfer to hotel, check in to hotel, rest of the day is for a leisurely walks of this gorgeous town of Ranikhet. Overnight stay at hotel at Ranikhet.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 4											
											:</b> Ranikhet – Almora (50kms. – 1.30hrs.)										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After breakfast, check out from hotel, then drive to Almora. Almora : is a scenic hill station in the northern state of Uttarakhand. Located on a five km long ridge which is shaped like a horse shoe, Almora is a quaint town in Kumaon Hills in the Himalayan range. It is at an average height of 1,651 meters above sea level, and is surrounded by greenery all around with beautiful thick forests of fir and pine trees covering the hills. Almora is a town of temples, with temple of Goddess Nanda Devi placed in the centre of the town.Almora is an agricultural base and a trade centre of dynamic activity. Silently placed in the lap of dutiful nature, Koshi (Kaushaki) and Suyal (Salmali) rivers flows by the side of this town and the town, monuments and palaces, is surrounded by dense forests of fur and pine trees. This place is culturally very rich and through out the year Almora celebrates many festivals and cultural events, main attractions of the tourists to experience the cultural heritage of the region. Arrive at Almora ,transfer to hotel,check in to hotel. Afternoon procced to explore the unspoiled flora & fauna of this beautiful hill station. Later back to hotel. Rest of the day free at leisure. overnight stay at hotel at Almora.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 5											
											:</b> Almora - Binsar Wildlife - Almora (35 kms. – 1hrs)										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After breakfast ,Full day excursion to Binsar Wildlife sanctuary. Binsar : is a small town in the state of Uttarakhand and is located amidst dense green forests. It is famous for the Binsar Wildlife Sanctuary. Located on the Jhandi Dhar hills of Kumaon. The place is known for its greenery and is surrounded by virgin forests of oak, rhododendron, pine and deodar all around.The main attraction of the town of Binsar is the wildlife sanctuary. The sanctuary covers an area of 45.59 sq km and has a wide variety of flora and fauna residing in. It is believed that over 200 varieties of birds are found in Binsar along with animals like deer, leopards, Himalayan bears, monkeys, foxes, flying squirrels and many others, making it a popular destination for wildlife enthusiasts. Day at the sanctuary. Later back to hotel. Rest of the day free at leisure, overnight stay at hotel at Almora			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 6											
											:</b> Almora - Kausani (55kms – 1.30hrs.)										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After breakfast, check out from hotel drive to Kausani. Kausani: nature own reserve and idle to spend a quiet holiday in the lap of nature with stunning view of the Himalayan ranges. Mahatma Gandhi, during his stay at Kausani, penned his memorable commentary on the 'Gita-Anashakti Yoga' inspired by the scenic grandeur of this richly gifted spot. Mahatma Gandhi was so much impresses that he started calling it “Switzerland of India”. The guesthouse where Mahatma Gandhi stayed is now known as the Anashakti Ashram. Famous Hindi poet Sumitra Nandan Pant was born at Kausani. Some of her early poems composed here have described the nature in its manifestations. Kausani is located 47kms north of Almora in Bageshwar district of the Kumaon region of Uttarakhand. Arrive at Kausani,transfer to hotel, check in to hotel.Afternoon picnic near the River Kosi and day to explore the beauty of nature.later back to hotel. Rest of the day free at leisure. overnight stay at hotel at Kausani. Day 07: Kausani - Delhi (380 kms – 8.30hrs) After breakfast, check-out from hotel. And drive to Delhi for onward destination.			
														   
											</div> 
											</div>
																			<script>
								jQuery(document).ready(function() {
									//jQuery('.product-detail').css('display','none');
								    jQuery(".sub-title").click(function() {
								        var $this = jQuery(this);
										  jQuery('.w-title').addClass('h15px',400);
								          $this.find('.w-title').removeClass('h15px',400);
										  jQuery('.product-detail').slideUp();
								          $this.next().slideDown();
								          if($this.find('i').hasClass('fa-angle-up')){
								          	$this.find('i').removeClass('fa-angle-up').addClass('fa-angle-down');
								          } else {
								          	$this.find('i').removeClass('fa-angle-down').addClass('fa-angle-up');
								          }
								        });
									});
								</script>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>Hotel</li>
																						<li>Meals</li>
																						<li>Sightseeing</li>
																				<li>All meals except main meals</li><li>
All ground transport, airport transfers, and flights</li><li>
All accommodations</li><li>
Sightseeing</li><li>
All applicable permits and entrance fees</li><li>
Full trek staff arrangements a Trek Leader and guides</li><li>
Porters or pack animals to carry equipments</li><li>
Use of Trek Pack</li>
																	</ul>
								</div>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Exclusions</p>
								</div>
								
								<ul><li>Alcohol or Beverage</li><li>
Use of Trek Pack</li><li>
Group medical kit</li><li>
All major group equipments, etc.</li></ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.</li></ul>						
								</div>
														<div class="data mt20px p15px">            
						<div class="mb7px"> 
						<p class="b xlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
						
						<ul><li>* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date.</li></ul>						
						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kausani Nainital Tour - 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="158480"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-rishikesh.htm" title="Packages in Rishikesh">Rishikesh</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-joshimath.htm" title="Packages in Joshimath">Joshimath</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-auli.htm" title="Packages in Auli">Auli</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-haridwar.htm" title="Packages in Haridwar">Haridwar</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-nainital.htm" title="Packages in Nainital">Nainital</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-ghangaria.htm" title="Packages in Ghangaria">Ghangaria</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-dehradun.htm" title="Packages in Dehradun">Dehradun</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-corbett.htm" title="Packages in Corbett">Corbett</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-hemkunt-sahib.htm" title="Packages in Hemkund Sahib">Hemkund Sahib</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/adventure-holidays-catid.htm" title="Adventure Packages">Adventure</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/family-holidays-catid.htm" title="Family Packages">Family</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/hill-station-holidays-catid.htm" title="Hill Station Packages">Hill Station</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Packages">Religious & Pilgrimage</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/lakes-rivers-holidays-catid.htm" title="Lakes & Rivers Packages">Lakes & Rivers</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/trekking-holidays-catid.htm" title="Trekking Packages">Trekking</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/valley-holidays-catid.htm" title="Valley Packages">Valley</a> <b class="alpha50 bn small">(6)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/national-parks-holidays-catid.htm" title="National Parks Packages">National Parks</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/wildlife-nature-holidays-catid.htm" title="Wildlife and Nature Packages">Wildlife and Nature</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/romantic-holidays-catid.htm" title="Romantic Packages">Romantic</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.himalayancove.com/heritage-holidays-catid.htm" title="Heritage Packages">Heritage</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
										<br />
						<div class="row1"> 
						<div class="col-1"> 
						<div class="mt30px">
						<p class="xxlarge b pb10px bdrB db"> Similar Tour Packages for New Delhi, Nainital, Almora, Kausani, Ranikhet</p>
						</div>
						<br/>
						<div class="cf_3img">
						<ul class="lsn m0px p0px fo idv_eqheight cols_similar">
											
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.himalayancove.com/tour-packages/corbett-nainital-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242759.jpg"  alt="Corbett Nainital Tour" title="Corbett Nainital Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.himalayancove.com/tour-packages/corbett-nainital-tour.htm" title="Corbett Nainital Tour"><h3>Corbett Nainital Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								3 Nights / 4 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  New Delhi, Nainital, Corbett</p>
															<div class="mt10px small">
							<form name="pkg_158476" id="pkg_158476" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.himalayancove.com/tour-packages/corbett-nainital-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Corbett Nainital Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="158476"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
															
						</ul>
						</div>
						</div> 		  
						<br>
						</div>  
						<br />
										
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:60:"Book Kausani Nainital Tour - 5 Nights / 6 Days Tour Packages";i:2;s:150:"book kausani nainital tour - 5 nights / 6 days tour packages, hill station tour packages, new delhi, nainital, almora, kausani, ranikhet tour packages";i:3;s:196:"Book Kausani Nainital Tour - 5 Nights / 6 Days tour packages from Himalayan Cove - Get attractive 5 Nights / 6 Days Hill Station  tour packages for  New Delhi, Nainital, Almora, Kausani, Ranikhet.";i:4;s:1795:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Nainital, Almora, Kausani, Ranikhet"        
		                 },
		      "description": "Kausani Nainital tour Nainital is a glittering jewel in the Himalayn necklace, blessed with scenic natural splendor 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 .a Nainital has a varied topography . Some of the important places in the district are Nainital , Haldwani , Kaladhungi , Ramnagar , Bhowali , Ramgarh , Mukteshwar , Bhimtal , Sattal and Naukuchiatal . Nainital’s unending expense of scenic beauty is nothing short of a romance with awe-inspiring and pristine Mother nature. Located 53 km to the north of Almora, Kausani, is a picturesque hill station famous for its scenic splendor and its spectacular view of the Himalayas. Flanked by the rivers Kosi and Gomti, this small town sits atop the Pingnath Peak. Though Kausani is not as well known as any of the other hill stations, the area is full of deep and dense pine forest, tea gardens and affords a breath taking view of the Himalayan peaks of Trishul, Panchchuli and Nanda Devi. Major attractions around Kausani are the Temple town of Bageshwar situated at the confluence of the river Sarayu and Gomti, the Gandhi Ashram and the Rudradhari falls and caves.Alcohol or Beverage

Use of Trek Pack

Group medical kit

All major group equipments, etc.",
		      "name": "Kausani Nainital Tour",
		      "telephone": "+91-9871364441"
		    }
		    </script>
			";i:5;N;}