a:6:{i:0;s:11438:"				<div class="h1"><h1>Manas, Nameri & Kaziranga Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.shareoursource.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.shareoursource.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Manas, Nameri & Kaziranga Tour</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">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Guwahati, Sonitpur, Kaziranga, Barpeta</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.shareoursource.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Manas, Nameri & Kaziranga 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="119658"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_15/433238/193833.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/433238/193833.jpg"  width="150" height="150"    alt="Manas, Nameri & Kaziranga Tour" title="Manas, Nameri & Kaziranga Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<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> Arrival
								</p>
								<p class="aj">Upon arrival at Guwahati airport / Railway station meet with our representative. After welcome arrival we will leave for our first wildlife destination in the state Manas National Park. Manas National Park is situated within the foothills of Himalaya in the north bank of the Brahmaputra River.<br />
Upon arrival in Manas transfer to the wildlife resort. Enjoy the vicinity around the resort with the amount of time. Overnight stay in Manas.</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> Manas National Park
								</p>
								<p class="aj">This morning we will start our day little early and will move for our first Jungle ride to the Manas National Park. The wildlife safari is the best medium to explore a wildlife sanctuary and view the wildlife from a very close. This one hour safari will take us to the dense and narrow paths to increasing the chances of animal sighting.<br />
Later we will return to the resort for fresh-n-up and breakfast. After breakfast we will be ready for our first vehicle safari to the national park. The vehicle safari to the national park will be for two to two and half hrs. Here we will be moving on the wild path of Manas National Park to explore the most stunning pristine wildlife habitat.<br />
Return back to the resort for lunch. After lunch we will again move on our wildlife jungle safari to explore the Brahmaputra valley with its semi-evergreen forest. The forest is very rich in species of all Indian wildlife. Here you will have a chance to view the only known home for the rare and endangered Assam Roofed Turtle, Hispid Hare, Golden Langur and Pygmy Hog. Later in the evening return to the resort. Dinner and overnight stay at resort.</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> Manas National Park - Nameri National Park
								</p>
								<p class="aj">Today we will leave for our next nature's pride Nameri National Park, situated within the foothills of eastern Himalayas. Upon reaching transfer to the Nature camp. Evening free at leisure or make a visit to the nearby Pygmy Hog Foundation and learn about the species. The Pygmy Hogs are one of the world's most endangered mammals. These Pygmy Hogs are kept in captive breeding in Guwahati and now they are kept in semi-natural conditions of Nameri before being set free into the park.<br />
Overnight stay in camp.</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> Nameri National Park
								</p>
								<p class="aj">This morning we will go on a fascinating river rafting on Jia Bhoroli River. For the same we will drive 25 kms from the resort towards the river upstream, from where we will enjoy the downstream rafting on the inflatable raft. Here we will have a chance to see a lot of migratory waterfowl and if you are so lucky then one can even spot the Royal Bengal Tiger and the Elephant on the banks of the river from the boat. The 13 km stretch of rafting will takes around three hours.<br />
After the river rafting return to the camp site for lunch. After lunch we will go on a nature trail along the reserve. Here we will be accompanied with the knowledgeable forest guides and armed forest guards. The forest treks are the best way to explore the Nameri National Park as it allows you to get very close to the wildlife life. Here once can spot the rare species of white-winged wood ducks and the great hornbills.</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> Nameri National Park - Kaziranga
								</p>
								<p class="aj">On the fifth day of our Assam adventure, we will leave for the UNESCO world Heritage site and Rhino's country - Kaziranga National Park. Upon reaching Kaziranga transfer to the wildlife resort.<br />
After fresh-n-up one can go on a guided tour through the forest near your accommodation along the river bank. Also visit the tea garden and rubber plantation. Later return to the resort for overnight stay.</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 6:</b> Kaziranga
								</p>
								<p class="aj">Today we will get up a little early and will get ready for first forest safari. Our representative will take you to the riding point by jeeps. Here we will be moving through the tall grass while the morning mists slowly lift is an experience that one won't forget easily. The wildlife safari is best mean for viewing wildlife as the wild animals are not afraid themselves and possibly we can observe them from the very close.<br />
We will return to the resort for breakfast. After breakfast we will go on our first Jeep safari to the national park for wildlife viewing in the central zone. Later return to the resort for fresh-n-up and spent the time till lunch. After lunch we will go on our second jeep safari of the day, this time we will visit the Western zone of the national park. One can also spent some time at the Donga view point, situated in western zone. Later return to the resort for overnight stay.</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 7:</b> Departure
								</p>
								<p class="aj">After breakfast check out from the resort and leave for Guwahati. Upon arrival in Guwahati city we will transit to airport / railway station for onward connection.<br />
<br />
Tour and Services ends</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>
												</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* 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. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.shareoursource.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Manas, Nameri & Kaziranga 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="119658"/>
						</form>
						</div>
						
						";i:1;s:69:"Book Manas, Nameri & Kaziranga Tour - 6 Nights / 7 Days Tour Packages";i:2;s:158:"book manas, nameri & kaziranga tour - 6 nights / 7 days tour packages, wildlife and nature tour packages, guwahati, sonitpur, kaziranga, barpeta tour packages";i:3;s:199:"Share Our Source Traders offers Manas, Nameri & Kaziranga Tour - 6 Nights / 7 Days tour package, budget Wildlife and Nature tour packages for Guwahati, Sonitpur, Kaziranga, Barpeta at exciting price.";i:4;s:440:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Guwahati, Sonitpur, Kaziranga, Barpeta"        
		                 },
		      "description": "",
		      "name": "Manas, Nameri & Kaziranga Tour",
		      "telephone": "+91-9444728610"
		    }
		    </script>
			";i:5;N;}